// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , Russian1AI , Russian2AI , Russian3AI , Russian4AI , Russian5AI , DifficultyC , def_russian1_ai , def_russian2_ai , def_russian3_ai , def_russian4_ai , def_russian5_ai , def_difficulty ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; export p1 , p2 , p3 , p4 , p5 ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 34
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 32
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 35
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 33
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 236
// begin Your_Side := 1 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 1
  69: ST_TO_ADDR
// Side_Positions := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  70: LD_ADDR_EXP 34
  74: PUSH
  75: LD_INT 0
  77: PUSH
  78: LD_INT 0
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 0
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 1 , 2 , 3 , 4 , 5 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 32
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: LD_INT 2
 119: PUSH
 120: LD_INT 3
 122: PUSH
 123: LD_INT 4
 125: PUSH
 126: LD_INT 5
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 1 , 2 , 3 , 1 , 2 , 3 , 0 , 0 ] ;
 148: LD_ADDR_EXP 35
 152: PUSH
 153: LD_INT 1
 155: PUSH
 156: LD_INT 2
 158: PUSH
 159: LD_INT 3
 161: PUSH
 162: LD_INT 1
 164: PUSH
 165: LD_INT 2
 167: PUSH
 168: LD_INT 3
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 0
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ] , [ 6 ] ] ;
 187: LD_ADDR_EXP 33
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: EMPTY
 196: LIST
 197: PUSH
 198: LD_INT 2
 200: PUSH
 201: EMPTY
 202: LIST
 203: PUSH
 204: LD_INT 3
 206: PUSH
 207: EMPTY
 208: LIST
 209: PUSH
 210: LD_INT 4
 212: PUSH
 213: EMPTY
 214: LIST
 215: PUSH
 216: LD_INT 5
 218: PUSH
 219: EMPTY
 220: LIST
 221: PUSH
 222: LD_INT 6
 224: PUSH
 225: EMPTY
 226: LIST
 227: PUSH
 228: EMPTY
 229: LIST
 230: LIST
 231: LIST
 232: LIST
 233: LIST
 234: LIST
 235: ST_TO_ADDR
// end ; for i := 1 to 8 do
 236: LD_ADDR_VAR 0 2
 240: PUSH
 241: DOUBLE
 242: LD_INT 1
 244: DEC
 245: ST_TO_ADDR
 246: LD_INT 8
 248: PUSH
 249: FOR_TO
 250: IFFALSE 288
// if Multiplayer_GetPlayerIsSpec ( i ) then
 252: LD_VAR 0 2
 256: PPUSH
 257: CALL_OW 530
 261: IFFALSE 286
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 263: LD_ADDR_EXP 34
 267: PUSH
 268: LD_EXP 34
 272: PPUSH
 273: LD_VAR 0 2
 277: PPUSH
 278: LD_INT 0
 280: PPUSH
 281: CALL_OW 1
 285: ST_TO_ADDR
 286: GO 249
 288: POP
 289: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 290: LD_ADDR_EXP 37
 294: PUSH
 295: LD_INT 0
 297: PUSH
 298: LD_INT 0
 300: PUSH
 301: LD_INT 0
 303: PUSH
 304: LD_INT 0
 306: PUSH
 307: LD_INT 0
 309: PUSH
 310: LD_INT 0
 312: PUSH
 313: EMPTY
 314: LIST
 315: LIST
 316: LIST
 317: LIST
 318: LIST
 319: LIST
 320: ST_TO_ADDR
// for i := 1 to 8 do
 321: LD_ADDR_VAR 0 2
 325: PUSH
 326: DOUBLE
 327: LD_INT 1
 329: DEC
 330: ST_TO_ADDR
 331: LD_INT 8
 333: PUSH
 334: FOR_TO
 335: IFFALSE 382
// if Side_Positions [ i ] then
 337: LD_EXP 34
 341: PUSH
 342: LD_VAR 0 2
 346: ARRAY
 347: IFFALSE 380
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 349: LD_ADDR_EXP 37
 353: PUSH
 354: LD_EXP 37
 358: PPUSH
 359: LD_EXP 34
 363: PUSH
 364: LD_VAR 0 2
 368: ARRAY
 369: PPUSH
 370: LD_VAR 0 2
 374: PPUSH
 375: CALL_OW 1
 379: ST_TO_ADDR
 380: GO 334
 382: POP
 383: POP
// Team_Game := Side_Teams [ your_side ] ;
 384: LD_ADDR_EXP 36
 388: PUSH
 389: LD_EXP 32
 393: PUSH
 394: LD_OWVAR 2
 398: ARRAY
 399: ST_TO_ADDR
// if Multiplayer then
 400: LD_OWVAR 4
 404: IFFALSE 577
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
 406: LD_ADDR_EXP 1
 410: PUSH
 411: LD_INT 0
 413: PPUSH
 414: CALL_OW 426
 418: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 419: LD_ADDR_EXP 2
 423: PUSH
 424: LD_INT 1
 426: PPUSH
 427: CALL_OW 426
 431: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 432: LD_ADDR_EXP 3
 436: PUSH
 437: LD_INT 2
 439: PPUSH
 440: CALL_OW 426
 444: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 445: LD_ADDR_EXP 4
 449: PUSH
 450: LD_INT 3
 452: PPUSH
 453: CALL_OW 426
 457: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
 458: LD_ADDR_EXP 5
 462: PUSH
 463: LD_INT 4
 465: PPUSH
 466: CALL_OW 426
 470: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 471: LD_ADDR_EXP 6
 475: PUSH
 476: LD_INT 10
 478: PPUSH
 479: CALL_OW 426
 483: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 484: LD_ADDR_EXP 7
 488: PUSH
 489: LD_INT 13
 491: PPUSH
 492: CALL_OW 426
 496: ST_TO_ADDR
// def_russian1_ai := GetMultiplayerSetting ( 15 ) ;
 497: LD_ADDR_EXP 26
 501: PUSH
 502: LD_INT 15
 504: PPUSH
 505: CALL_OW 426
 509: ST_TO_ADDR
// def_russian2_ai := GetMultiplayerSetting ( 16 ) ;
 510: LD_ADDR_EXP 27
 514: PUSH
 515: LD_INT 16
 517: PPUSH
 518: CALL_OW 426
 522: ST_TO_ADDR
// def_russian3_ai := GetMultiplayerSetting ( 17 ) ;
 523: LD_ADDR_EXP 28
 527: PUSH
 528: LD_INT 17
 530: PPUSH
 531: CALL_OW 426
 535: ST_TO_ADDR
// def_russian4_ai := GetMultiplayerSetting ( 18 ) ;
 536: LD_ADDR_EXP 29
 540: PUSH
 541: LD_INT 18
 543: PPUSH
 544: CALL_OW 426
 548: ST_TO_ADDR
// def_russian5_ai := GetMultiplayerSetting ( 19 ) ;
 549: LD_ADDR_EXP 30
 553: PUSH
 554: LD_INT 19
 556: PPUSH
 557: CALL_OW 426
 561: ST_TO_ADDR
// def_difficulty := GetMultiplayerSetting ( 20 ) ;
 562: LD_ADDR_EXP 31
 566: PUSH
 567: LD_INT 20
 569: PPUSH
 570: CALL_OW 426
 574: ST_TO_ADDR
// end else
 575: GO 677
// begin Randomize ;
 577: CALL_OW 10
// def_base_level := 2 ;
 581: LD_ADDR_EXP 1
 585: PUSH
 586: LD_INT 2
 588: ST_TO_ADDR
// def_amount_of_people := 0 ;
 589: LD_ADDR_EXP 2
 593: PUSH
 594: LD_INT 0
 596: ST_TO_ADDR
// def_skill_level := 1 ;
 597: LD_ADDR_EXP 3
 601: PUSH
 602: LD_INT 1
 604: ST_TO_ADDR
// def_starting_resources := 2 ;
 605: LD_ADDR_EXP 4
 609: PUSH
 610: LD_INT 2
 612: ST_TO_ADDR
// def_shipments_density := 1 ;
 613: LD_ADDR_EXP 5
 617: PUSH
 618: LD_INT 1
 620: ST_TO_ADDR
// def_shared_vision := 1 ;
 621: LD_ADDR_EXP 6
 625: PUSH
 626: LD_INT 1
 628: ST_TO_ADDR
// def_people_respawning := 2 ;
 629: LD_ADDR_EXP 7
 633: PUSH
 634: LD_INT 2
 636: ST_TO_ADDR
// def_Russian1_AI = 1 ;
 637: LD_ADDR_EXP 26
 641: PUSH
 642: LD_INT 1
 644: ST_TO_ADDR
// def_Russian2_AI = 1 ;
 645: LD_ADDR_EXP 27
 649: PUSH
 650: LD_INT 1
 652: ST_TO_ADDR
// def_Russian3_AI = 1 ;
 653: LD_ADDR_EXP 28
 657: PUSH
 658: LD_INT 1
 660: ST_TO_ADDR
// def_Russian4_AI = 1 ;
 661: LD_ADDR_EXP 29
 665: PUSH
 666: LD_INT 1
 668: ST_TO_ADDR
// def_Russian5_AI = 1 ;
 669: LD_ADDR_EXP 30
 673: PUSH
 674: LD_INT 1
 676: ST_TO_ADDR
// end ; is_depot := [ 0 , 1 , 2 ] [ def_base_level + 1 ] ;
 677: LD_ADDR_EXP 8
 681: PUSH
 682: LD_INT 0
 684: PUSH
 685: LD_INT 1
 687: PUSH
 688: LD_INT 2
 690: PUSH
 691: EMPTY
 692: LIST
 693: LIST
 694: LIST
 695: PUSH
 696: LD_EXP 1
 700: PUSH
 701: LD_INT 1
 703: PLUS
 704: ARRAY
 705: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
 706: LD_ADDR_EXP 9
 710: PUSH
 711: LD_INT 0
 713: PUSH
 714: LD_INT 0
 716: PUSH
 717: LD_INT 2
 719: PUSH
 720: EMPTY
 721: LIST
 722: LIST
 723: LIST
 724: PUSH
 725: LD_EXP 1
 729: PUSH
 730: LD_INT 1
 732: PLUS
 733: ARRAY
 734: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
 735: LD_ADDR_EXP 10
 739: PUSH
 740: LD_INT 9
 742: PUSH
 743: LD_INT 12
 745: PUSH
 746: LD_INT 15
 748: PUSH
 749: LD_INT 24
 751: PUSH
 752: EMPTY
 753: LIST
 754: LIST
 755: LIST
 756: LIST
 757: PUSH
 758: LD_EXP 2
 762: PUSH
 763: LD_INT 1
 765: PLUS
 766: ARRAY
 767: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 768: LD_ADDR_EXP 11
 772: PUSH
 773: LD_INT 3
 775: PUSH
 776: LD_INT 5
 778: PUSH
 779: LD_INT 6
 781: PUSH
 782: LD_INT 7
 784: PUSH
 785: EMPTY
 786: LIST
 787: LIST
 788: LIST
 789: LIST
 790: PUSH
 791: LD_EXP 3
 795: PUSH
 796: LD_INT 1
 798: PLUS
 799: ARRAY
 800: ST_TO_ADDR
// starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 30 , 0 ] , [ 50 , 50 , 0 ] , [ 80 , 60 , 0 ] ] [ def_starting_resources + 1 ] ;
 801: LD_ADDR_EXP 13
 805: PUSH
 806: LD_INT 0
 808: PUSH
 809: LD_INT 0
 811: PUSH
 812: LD_INT 0
 814: PUSH
 815: EMPTY
 816: LIST
 817: LIST
 818: LIST
 819: PUSH
 820: LD_INT 30
 822: PUSH
 823: LD_INT 30
 825: PUSH
 826: LD_INT 0
 828: PUSH
 829: EMPTY
 830: LIST
 831: LIST
 832: LIST
 833: PUSH
 834: LD_INT 50
 836: PUSH
 837: LD_INT 50
 839: PUSH
 840: LD_INT 0
 842: PUSH
 843: EMPTY
 844: LIST
 845: LIST
 846: LIST
 847: PUSH
 848: LD_INT 80
 850: PUSH
 851: LD_INT 60
 853: PUSH
 854: LD_INT 0
 856: PUSH
 857: EMPTY
 858: LIST
 859: LIST
 860: LIST
 861: PUSH
 862: EMPTY
 863: LIST
 864: LIST
 865: LIST
 866: LIST
 867: PUSH
 868: LD_EXP 4
 872: PUSH
 873: LD_INT 1
 875: PLUS
 876: ARRAY
 877: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
 878: LD_ADDR_EXP 12
 882: PUSH
 883: LD_INT 10
 885: PUSH
 886: EMPTY
 887: LIST
 888: PUSH
 889: LD_INT 7
 891: PUSH
 892: LD_INT 14
 894: PUSH
 895: EMPTY
 896: LIST
 897: LIST
 898: PUSH
 899: LD_INT 6
 901: PUSH
 902: LD_INT 12
 904: PUSH
 905: LD_INT 18
 907: PUSH
 908: EMPTY
 909: LIST
 910: LIST
 911: LIST
 912: PUSH
 913: LD_INT 5
 915: PUSH
 916: LD_INT 10
 918: PUSH
 919: LD_INT 15
 921: PUSH
 922: LD_INT 20
 924: PUSH
 925: EMPTY
 926: LIST
 927: LIST
 928: LIST
 929: LIST
 930: PUSH
 931: EMPTY
 932: LIST
 933: LIST
 934: LIST
 935: LIST
 936: PUSH
 937: LD_EXP 4
 941: PUSH
 942: LD_INT 1
 944: PLUS
 945: ARRAY
 946: ST_TO_ADDR
// shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
 947: LD_ADDR_EXP 14
 951: PUSH
 952: LD_INT 150
 954: PUSH
 955: LD_INT 125
 957: PUSH
 958: LD_INT 100
 960: PUSH
 961: LD_INT 50
 963: PUSH
 964: EMPTY
 965: LIST
 966: LIST
 967: LIST
 968: LIST
 969: PUSH
 970: LD_EXP 5
 974: PUSH
 975: LD_INT 1
 977: PLUS
 978: ARRAY
 979: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 5 5$00 , 3 3$0 ] [ def_people_respawning + 1 ] ;
 980: LD_ADDR_EXP 18
 984: PUSH
 985: LD_INT 0
 987: PUSH
 988: LD_INT 10500
 990: PUSH
 991: LD_INT 6300
 993: PUSH
 994: EMPTY
 995: LIST
 996: LIST
 997: LIST
 998: PUSH
 999: LD_EXP 7
1003: PUSH
1004: LD_INT 1
1006: PLUS
1007: ARRAY
1008: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 15 15$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
1009: LD_ADDR_EXP 19
1013: PUSH
1014: LD_INT 0
1016: PUSH
1017: LD_INT 31500
1019: PUSH
1020: LD_INT 10500
1022: PUSH
1023: EMPTY
1024: LIST
1025: LIST
1026: LIST
1027: PUSH
1028: LD_EXP 7
1032: PUSH
1033: LD_INT 1
1035: PLUS
1036: ARRAY
1037: ST_TO_ADDR
// russian1AI := [ 0 , 1 ] [ def_russian1_ai + 1 ] ;
1038: LD_ADDR_EXP 20
1042: PUSH
1043: LD_INT 0
1045: PUSH
1046: LD_INT 1
1048: PUSH
1049: EMPTY
1050: LIST
1051: LIST
1052: PUSH
1053: LD_EXP 26
1057: PUSH
1058: LD_INT 1
1060: PLUS
1061: ARRAY
1062: ST_TO_ADDR
// russian2AI := [ 0 , 1 ] [ def_russian2_ai + 1 ] ;
1063: LD_ADDR_EXP 21
1067: PUSH
1068: LD_INT 0
1070: PUSH
1071: LD_INT 1
1073: PUSH
1074: EMPTY
1075: LIST
1076: LIST
1077: PUSH
1078: LD_EXP 27
1082: PUSH
1083: LD_INT 1
1085: PLUS
1086: ARRAY
1087: ST_TO_ADDR
// russian3AI := [ 0 , 1 ] [ def_russian3_ai + 1 ] ;
1088: LD_ADDR_EXP 22
1092: PUSH
1093: LD_INT 0
1095: PUSH
1096: LD_INT 1
1098: PUSH
1099: EMPTY
1100: LIST
1101: LIST
1102: PUSH
1103: LD_EXP 28
1107: PUSH
1108: LD_INT 1
1110: PLUS
1111: ARRAY
1112: ST_TO_ADDR
// russian4AI := [ 0 , 1 ] [ def_russian4_ai + 1 ] ;
1113: LD_ADDR_EXP 23
1117: PUSH
1118: LD_INT 0
1120: PUSH
1121: LD_INT 1
1123: PUSH
1124: EMPTY
1125: LIST
1126: LIST
1127: PUSH
1128: LD_EXP 29
1132: PUSH
1133: LD_INT 1
1135: PLUS
1136: ARRAY
1137: ST_TO_ADDR
// russian5AI := [ 0 , 1 ] [ def_russian5_ai + 1 ] ;
1138: LD_ADDR_EXP 24
1142: PUSH
1143: LD_INT 0
1145: PUSH
1146: LD_INT 1
1148: PUSH
1149: EMPTY
1150: LIST
1151: LIST
1152: PUSH
1153: LD_EXP 30
1157: PUSH
1158: LD_INT 1
1160: PLUS
1161: ARRAY
1162: ST_TO_ADDR
// difficultyC := [ 3 , 5 , 7 , 9 ] [ def_difficulty + 1 ] ;
1163: LD_ADDR_EXP 25
1167: PUSH
1168: LD_INT 3
1170: PUSH
1171: LD_INT 5
1173: PUSH
1174: LD_INT 7
1176: PUSH
1177: LD_INT 9
1179: PUSH
1180: EMPTY
1181: LIST
1182: LIST
1183: LIST
1184: LIST
1185: PUSH
1186: LD_EXP 31
1190: PUSH
1191: LD_INT 1
1193: PLUS
1194: ARRAY
1195: ST_TO_ADDR
// end ;
1196: LD_VAR 0 1
1200: RET
// function init_map ; var i , j ; begin
1201: LD_INT 0
1203: PPUSH
1204: PPUSH
1205: PPUSH
// depot_def := [ [ 30 , 18 , 3 ] , [ 93 , 7 , 3 ] , [ 187 , 83 , 4 ] , [ 224 , 144 , 5 ] , [ 84 , 137 , 0 ] ] ;
1206: LD_ADDR_EXP 38
1210: PUSH
1211: LD_INT 30
1213: PUSH
1214: LD_INT 18
1216: PUSH
1217: LD_INT 3
1219: PUSH
1220: EMPTY
1221: LIST
1222: LIST
1223: LIST
1224: PUSH
1225: LD_INT 93
1227: PUSH
1228: LD_INT 7
1230: PUSH
1231: LD_INT 3
1233: PUSH
1234: EMPTY
1235: LIST
1236: LIST
1237: LIST
1238: PUSH
1239: LD_INT 187
1241: PUSH
1242: LD_INT 83
1244: PUSH
1245: LD_INT 4
1247: PUSH
1248: EMPTY
1249: LIST
1250: LIST
1251: LIST
1252: PUSH
1253: LD_INT 224
1255: PUSH
1256: LD_INT 144
1258: PUSH
1259: LD_INT 5
1261: PUSH
1262: EMPTY
1263: LIST
1264: LIST
1265: LIST
1266: PUSH
1267: LD_INT 84
1269: PUSH
1270: LD_INT 137
1272: PUSH
1273: LD_INT 0
1275: PUSH
1276: EMPTY
1277: LIST
1278: LIST
1279: LIST
1280: PUSH
1281: EMPTY
1282: LIST
1283: LIST
1284: LIST
1285: LIST
1286: LIST
1287: ST_TO_ADDR
// for i in depot_def do
1288: LD_ADDR_VAR 0 2
1292: PUSH
1293: LD_EXP 38
1297: PUSH
1298: FOR_IN
1299: IFFALSE 1373
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
1301: LD_ADDR_EXP 40
1305: PUSH
1306: LD_EXP 40
1310: PUSH
1311: LD_VAR 0 2
1315: PUSH
1316: LD_INT 1
1318: ARRAY
1319: PPUSH
1320: LD_VAR 0 2
1324: PUSH
1325: LD_INT 3
1327: ARRAY
1328: PPUSH
1329: LD_INT 10
1331: PPUSH
1332: CALL_OW 272
1336: PUSH
1337: LD_VAR 0 2
1341: PUSH
1342: LD_INT 2
1344: ARRAY
1345: PPUSH
1346: LD_VAR 0 2
1350: PUSH
1351: LD_INT 3
1353: ARRAY
1354: PPUSH
1355: LD_INT 10
1357: PPUSH
1358: CALL_OW 273
1362: PUSH
1363: EMPTY
1364: LIST
1365: LIST
1366: PUSH
1367: EMPTY
1368: LIST
1369: ADD
1370: ST_TO_ADDR
1371: GO 1298
1373: POP
1374: POP
// breastworks_def := [ [ [ 44 , 38 , 5 ] , [ 44 , 29 , 5 ] ] , [ [ 73 , 9 , 1 ] , [ 111 , 38 , 5 ] ] , [ [ 167 , 76 , 2 ] , [ 184 , 95 , 0 ] ] , [ [ 203 , 141 , 2 ] , [ 208 , 127 , 2 ] ] , [ [ 97 , 133 , 4 ] , [ 77 , 123 , 3 ] ] , ] ;
1375: LD_ADDR_EXP 39
1379: PUSH
1380: LD_INT 44
1382: PUSH
1383: LD_INT 38
1385: PUSH
1386: LD_INT 5
1388: PUSH
1389: EMPTY
1390: LIST
1391: LIST
1392: LIST
1393: PUSH
1394: LD_INT 44
1396: PUSH
1397: LD_INT 29
1399: PUSH
1400: LD_INT 5
1402: PUSH
1403: EMPTY
1404: LIST
1405: LIST
1406: LIST
1407: PUSH
1408: EMPTY
1409: LIST
1410: LIST
1411: PUSH
1412: LD_INT 73
1414: PUSH
1415: LD_INT 9
1417: PUSH
1418: LD_INT 1
1420: PUSH
1421: EMPTY
1422: LIST
1423: LIST
1424: LIST
1425: PUSH
1426: LD_INT 111
1428: PUSH
1429: LD_INT 38
1431: PUSH
1432: LD_INT 5
1434: PUSH
1435: EMPTY
1436: LIST
1437: LIST
1438: LIST
1439: PUSH
1440: EMPTY
1441: LIST
1442: LIST
1443: PUSH
1444: LD_INT 167
1446: PUSH
1447: LD_INT 76
1449: PUSH
1450: LD_INT 2
1452: PUSH
1453: EMPTY
1454: LIST
1455: LIST
1456: LIST
1457: PUSH
1458: LD_INT 184
1460: PUSH
1461: LD_INT 95
1463: PUSH
1464: LD_INT 0
1466: PUSH
1467: EMPTY
1468: LIST
1469: LIST
1470: LIST
1471: PUSH
1472: EMPTY
1473: LIST
1474: LIST
1475: PUSH
1476: LD_INT 203
1478: PUSH
1479: LD_INT 141
1481: PUSH
1482: LD_INT 2
1484: PUSH
1485: EMPTY
1486: LIST
1487: LIST
1488: LIST
1489: PUSH
1490: LD_INT 208
1492: PUSH
1493: LD_INT 127
1495: PUSH
1496: LD_INT 2
1498: PUSH
1499: EMPTY
1500: LIST
1501: LIST
1502: LIST
1503: PUSH
1504: EMPTY
1505: LIST
1506: LIST
1507: PUSH
1508: LD_INT 97
1510: PUSH
1511: LD_INT 133
1513: PUSH
1514: LD_INT 4
1516: PUSH
1517: EMPTY
1518: LIST
1519: LIST
1520: LIST
1521: PUSH
1522: LD_INT 77
1524: PUSH
1525: LD_INT 123
1527: PUSH
1528: LD_INT 3
1530: PUSH
1531: EMPTY
1532: LIST
1533: LIST
1534: LIST
1535: PUSH
1536: EMPTY
1537: LIST
1538: LIST
1539: PUSH
1540: EMPTY
1541: LIST
1542: LIST
1543: LIST
1544: LIST
1545: LIST
1546: ST_TO_ADDR
// end ;
1547: LD_VAR 0 1
1551: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
1552: LD_INT 0
1554: PPUSH
1555: PPUSH
1556: PPUSH
// if not Team_Game then
1557: LD_EXP 36
1561: NOT
1562: IFFALSE 1660
// begin for i = 1 to 8 do
1564: LD_ADDR_VAR 0 2
1568: PUSH
1569: DOUBLE
1570: LD_INT 1
1572: DEC
1573: ST_TO_ADDR
1574: LD_INT 8
1576: PUSH
1577: FOR_TO
1578: IFFALSE 1656
// for j = 1 to 8 do
1580: LD_ADDR_VAR 0 3
1584: PUSH
1585: DOUBLE
1586: LD_INT 1
1588: DEC
1589: ST_TO_ADDR
1590: LD_INT 8
1592: PUSH
1593: FOR_TO
1594: IFFALSE 1652
// if i <> j then
1596: LD_VAR 0 2
1600: PUSH
1601: LD_VAR 0 3
1605: NONEQUAL
1606: IFFALSE 1630
// SetAttitude ( i , j , att_enemy , true ) else
1608: LD_VAR 0 2
1612: PPUSH
1613: LD_VAR 0 3
1617: PPUSH
1618: LD_INT 2
1620: PPUSH
1621: LD_INT 1
1623: PPUSH
1624: CALL_OW 80
1628: GO 1650
// SetAttitude ( i , j , att_friend , true ) ;
1630: LD_VAR 0 2
1634: PPUSH
1635: LD_VAR 0 3
1639: PPUSH
1640: LD_INT 1
1642: PPUSH
1643: LD_INT 1
1645: PPUSH
1646: CALL_OW 80
1650: GO 1593
1652: POP
1653: POP
1654: GO 1577
1656: POP
1657: POP
// end else
1658: GO 1835
// begin if def_shared_vision then
1660: LD_EXP 6
1664: IFFALSE 1729
// begin for i in Teams do
1666: LD_ADDR_VAR 0 2
1670: PUSH
1671: LD_EXP 33
1675: PUSH
1676: FOR_IN
1677: IFFALSE 1727
// for j = 2 to i do
1679: LD_ADDR_VAR 0 3
1683: PUSH
1684: DOUBLE
1685: LD_INT 2
1687: DEC
1688: ST_TO_ADDR
1689: LD_VAR 0 2
1693: PUSH
1694: FOR_TO
1695: IFFALSE 1723
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
1697: LD_VAR 0 2
1701: PUSH
1702: LD_VAR 0 3
1706: ARRAY
1707: PPUSH
1708: LD_VAR 0 2
1712: PUSH
1713: LD_INT 1
1715: ARRAY
1716: PPUSH
1717: CALL_OW 343
1721: GO 1694
1723: POP
1724: POP
1725: GO 1676
1727: POP
1728: POP
// end ; for i = 1 to 8 do
1729: LD_ADDR_VAR 0 2
1733: PUSH
1734: DOUBLE
1735: LD_INT 1
1737: DEC
1738: ST_TO_ADDR
1739: LD_INT 8
1741: PUSH
1742: FOR_TO
1743: IFFALSE 1833
// for j = 1 to 8 do
1745: LD_ADDR_VAR 0 3
1749: PUSH
1750: DOUBLE
1751: LD_INT 1
1753: DEC
1754: ST_TO_ADDR
1755: LD_INT 8
1757: PUSH
1758: FOR_TO
1759: IFFALSE 1829
// if Side_Teams [ i ] = Side_Teams [ j ] then
1761: LD_EXP 32
1765: PUSH
1766: LD_VAR 0 2
1770: ARRAY
1771: PUSH
1772: LD_EXP 32
1776: PUSH
1777: LD_VAR 0 3
1781: ARRAY
1782: EQUAL
1783: IFFALSE 1807
// SetAttitude ( i , j , att_friend , true ) else
1785: LD_VAR 0 2
1789: PPUSH
1790: LD_VAR 0 3
1794: PPUSH
1795: LD_INT 1
1797: PPUSH
1798: LD_INT 1
1800: PPUSH
1801: CALL_OW 80
1805: GO 1827
// SetAttitude ( i , j , att_enemy , true ) ;
1807: LD_VAR 0 2
1811: PPUSH
1812: LD_VAR 0 3
1816: PPUSH
1817: LD_INT 2
1819: PPUSH
1820: LD_INT 1
1822: PPUSH
1823: CALL_OW 80
1827: GO 1758
1829: POP
1830: POP
1831: GO 1742
1833: POP
1834: POP
// end ; end ;
1835: LD_VAR 0 1
1839: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
1840: LD_INT 0
1842: PPUSH
1843: PPUSH
1844: PPUSH
1845: PPUSH
// result := [ ] ;
1846: LD_ADDR_VAR 0 6
1850: PUSH
1851: EMPTY
1852: ST_TO_ADDR
// for i := 1 to count do
1853: LD_ADDR_VAR 0 7
1857: PUSH
1858: DOUBLE
1859: LD_INT 1
1861: DEC
1862: ST_TO_ADDR
1863: LD_VAR 0 1
1867: PUSH
1868: FOR_TO
1869: IFFALSE 2265
// begin uc_direction := Rand ( 0 , 5 ) ;
1871: LD_ADDR_OWVAR 24
1875: PUSH
1876: LD_INT 0
1878: PPUSH
1879: LD_INT 5
1881: PPUSH
1882: CALL_OW 12
1886: ST_TO_ADDR
// if commander then
1887: LD_LOC 1
1891: IFFALSE 2000
// begin hc_name := mp_sides_players_names [ uc_side ] ;
1893: LD_ADDR_OWVAR 26
1897: PUSH
1898: LD_OWVAR 19
1902: PUSH
1903: LD_OWVAR 20
1907: ARRAY
1908: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
1909: LD_INT 1
1911: PPUSH
1912: LD_INT 2
1914: PPUSH
1915: CALL_OW 12
1919: PPUSH
1920: LD_VAR 0 2
1924: PPUSH
1925: LD_EXP 11
1929: PUSH
1930: LD_INT 2
1932: PLUS
1933: PPUSH
1934: CALL_OW 380
// hc_importance := 105 ;
1938: LD_ADDR_OWVAR 32
1942: PUSH
1943: LD_INT 105
1945: ST_TO_ADDR
// commander := false ;
1946: LD_ADDR_LOC 1
1950: PUSH
1951: LD_INT 0
1953: ST_TO_ADDR
// if Multiplayer then
1954: LD_OWVAR 4
1958: IFFALSE 1998
// begin hc_gallery := MULTIAVATARS ;
1960: LD_ADDR_OWVAR 33
1964: PUSH
1965: LD_STRING MULTIAVATARS
1967: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
1968: LD_ADDR_OWVAR 34
1972: PUSH
1973: LD_OWVAR 20
1977: PPUSH
1978: CALL_OW 525
1982: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
1983: LD_ADDR_OWVAR 27
1987: PUSH
1988: LD_OWVAR 20
1992: PPUSH
1993: CALL_OW 526
1997: ST_TO_ADDR
// end ; end else
1998: GO 2063
// begin hc_name :=  ;
2000: LD_ADDR_OWVAR 26
2004: PUSH
2005: LD_STRING 
2007: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
2008: LD_INT 1
2010: PPUSH
2011: LD_INT 2
2013: PPUSH
2014: CALL_OW 12
2018: PPUSH
2019: LD_VAR 0 2
2023: PPUSH
2024: LD_EXP 11
2028: PPUSH
2029: CALL_OW 380
// hc_importance := 0 ;
2033: LD_ADDR_OWVAR 32
2037: PUSH
2038: LD_INT 0
2040: ST_TO_ADDR
// if Multiplayer then
2041: LD_OWVAR 4
2045: IFFALSE 2063
// begin hc_gallery :=  ;
2047: LD_ADDR_OWVAR 33
2051: PUSH
2052: LD_STRING 
2054: ST_TO_ADDR
// hc_face_number := 0 ;
2055: LD_ADDR_OWVAR 34
2059: PUSH
2060: LD_INT 0
2062: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
2063: LD_ADDR_VAR 0 9
2067: PUSH
2068: CALL_OW 44
2072: ST_TO_ADDR
// if global_defined then
2073: LD_LOC 3
2077: IFFALSE 2217
// begin if ( cl = class_soldier ) then
2079: LD_VAR 0 2
2083: PUSH
2084: LD_INT 1
2086: EQUAL
2087: IFFALSE 2107
// j := i + soldiers_created else
2089: LD_ADDR_VAR 0 8
2093: PUSH
2094: LD_VAR 0 7
2098: PUSH
2099: LD_LOC 4
2103: PLUS
2104: ST_TO_ADDR
2105: GO 2117
// j := i ;
2107: LD_ADDR_VAR 0 8
2111: PUSH
2112: LD_VAR 0 7
2116: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
2117: LD_LOC 2
2121: PUSH
2122: LD_VAR 0 2
2126: ARRAY
2127: PUSH
2128: LD_VAR 0 8
2132: ARRAY
2133: PPUSH
2134: LD_VAR 0 9
2138: PPUSH
2139: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
2143: LD_VAR 0 9
2147: PPUSH
2148: LD_INT 2
2150: PPUSH
2151: LD_LOC 2
2155: PUSH
2156: LD_VAR 0 2
2160: ARRAY
2161: PUSH
2162: LD_VAR 0 8
2166: ARRAY
2167: PPUSH
2168: LD_INT 2
2170: PPUSH
2171: CALL_OW 260
2175: PPUSH
2176: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
2180: LD_VAR 0 9
2184: PPUSH
2185: LD_INT 1
2187: PPUSH
2188: LD_LOC 2
2192: PUSH
2193: LD_VAR 0 2
2197: ARRAY
2198: PUSH
2199: LD_VAR 0 8
2203: ARRAY
2204: PPUSH
2205: LD_INT 1
2207: PPUSH
2208: CALL_OW 260
2212: PPUSH
2213: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
2217: LD_VAR 0 9
2221: PPUSH
2222: LD_VAR 0 3
2226: PPUSH
2227: LD_VAR 0 4
2231: PPUSH
2232: LD_VAR 0 5
2236: PPUSH
2237: LD_INT 0
2239: PPUSH
2240: CALL_OW 50
// result := result ^ [ un ] ;
2244: LD_ADDR_VAR 0 6
2248: PUSH
2249: LD_VAR 0 6
2253: PUSH
2254: LD_VAR 0 9
2258: PUSH
2259: EMPTY
2260: LIST
2261: ADD
2262: ST_TO_ADDR
// end ;
2263: GO 1868
2265: POP
2266: POP
// if not global_defined then
2267: LD_LOC 3
2271: NOT
2272: IFFALSE 2350
// if ( global_units >= cl ) then
2274: LD_LOC 2
2278: PUSH
2279: LD_VAR 0 2
2283: GREATEREQUAL
2284: IFFALSE 2325
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
2286: LD_ADDR_LOC 2
2290: PUSH
2291: LD_LOC 2
2295: PPUSH
2296: LD_VAR 0 2
2300: PPUSH
2301: LD_LOC 2
2305: PUSH
2306: LD_VAR 0 2
2310: ARRAY
2311: PUSH
2312: LD_VAR 0 6
2316: ADD
2317: PPUSH
2318: CALL_OW 1
2322: ST_TO_ADDR
2323: GO 2350
// global_units := Replace ( global_units , cl , result ) ;
2325: LD_ADDR_LOC 2
2329: PUSH
2330: LD_LOC 2
2334: PPUSH
2335: LD_VAR 0 2
2339: PPUSH
2340: LD_VAR 0 6
2344: PPUSH
2345: CALL_OW 1
2349: ST_TO_ADDR
// end ;
2350: LD_VAR 0 6
2354: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
2355: LD_INT 0
2357: PPUSH
2358: PPUSH
2359: PPUSH
2360: PPUSH
2361: PPUSH
2362: PPUSH
2363: PPUSH
2364: PPUSH
2365: PPUSH
2366: PPUSH
// pos := Side_Positions [ side ] ;
2367: LD_ADDR_VAR 0 3
2371: PUSH
2372: LD_EXP 34
2376: PUSH
2377: LD_VAR 0 1
2381: ARRAY
2382: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
2383: LD_ADDR_OWVAR 21
2387: PUSH
2388: LD_EXP 35
2392: PUSH
2393: LD_VAR 0 1
2397: ARRAY
2398: ST_TO_ADDR
// uc_side := side ;
2399: LD_ADDR_OWVAR 20
2403: PUSH
2404: LD_VAR 0 1
2408: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
2409: LD_ADDR_VAR 0 4
2413: PUSH
2414: LD_EXP 38
2418: PUSH
2419: LD_VAR 0 3
2423: ARRAY
2424: PUSH
2425: LD_INT 1
2427: ARRAY
2428: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
2429: LD_ADDR_VAR 0 5
2433: PUSH
2434: LD_EXP 38
2438: PUSH
2439: LD_VAR 0 3
2443: ARRAY
2444: PUSH
2445: LD_INT 2
2447: ARRAY
2448: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
2449: LD_ADDR_VAR 0 6
2453: PUSH
2454: LD_EXP 38
2458: PUSH
2459: LD_VAR 0 3
2463: ARRAY
2464: PUSH
2465: LD_INT 3
2467: ARRAY
2468: ST_TO_ADDR
// if is_depot then
2469: LD_EXP 8
2473: IFFALSE 2580
// begin bc_type = b_depot ;
2475: LD_ADDR_OWVAR 42
2479: PUSH
2480: LD_INT 0
2482: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2483: LD_ADDR_VAR 0 11
2487: PUSH
2488: LD_VAR 0 4
2492: PPUSH
2493: LD_VAR 0 5
2497: PPUSH
2498: LD_VAR 0 6
2502: PPUSH
2503: CALL_OW 47
2507: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
2508: LD_VAR 0 11
2512: PPUSH
2513: LD_STRING @
2515: PUSH
2516: LD_VAR 0 1
2520: STR
2521: PPUSH
2522: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
2526: LD_VAR 0 11
2530: PPUSH
2531: CALL_OW 274
2535: PPUSH
2536: LD_INT 1
2538: PPUSH
2539: LD_EXP 13
2543: PUSH
2544: LD_INT 1
2546: ARRAY
2547: PPUSH
2548: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
2552: LD_VAR 0 11
2556: PPUSH
2557: CALL_OW 274
2561: PPUSH
2562: LD_INT 2
2564: PPUSH
2565: LD_EXP 13
2569: PUSH
2570: LD_INT 2
2572: ARRAY
2573: PPUSH
2574: CALL_OW 277
// end else
2578: GO 2724
// begin for i := 1 to 3 do
2580: LD_ADDR_VAR 0 7
2584: PUSH
2585: DOUBLE
2586: LD_INT 1
2588: DEC
2589: ST_TO_ADDR
2590: LD_INT 3
2592: PUSH
2593: FOR_TO
2594: IFFALSE 2722
// begin r := starting_resources [ i ] ;
2596: LD_ADDR_VAR 0 8
2600: PUSH
2601: LD_EXP 13
2605: PUSH
2606: LD_VAR 0 7
2610: ARRAY
2611: ST_TO_ADDR
// while r >= 10 do
2612: LD_VAR 0 8
2616: PUSH
2617: LD_INT 10
2619: GREATEREQUAL
2620: IFFALSE 2720
// if r > 50 then
2622: LD_VAR 0 8
2626: PUSH
2627: LD_INT 50
2629: GREATER
2630: IFFALSE 2676
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
2632: LD_VAR 0 7
2636: PPUSH
2637: LD_INT 5
2639: PPUSH
2640: LD_VAR 0 4
2644: PPUSH
2645: LD_VAR 0 5
2649: PPUSH
2650: LD_INT 4
2652: PPUSH
2653: LD_INT 0
2655: PPUSH
2656: CALL_OW 60
// r := r - 50 ;
2660: LD_ADDR_VAR 0 8
2664: PUSH
2665: LD_VAR 0 8
2669: PUSH
2670: LD_INT 50
2672: MINUS
2673: ST_TO_ADDR
// end else
2674: GO 2718
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
2676: LD_VAR 0 7
2680: PPUSH
2681: LD_VAR 0 8
2685: PUSH
2686: LD_INT 10
2688: DIV
2689: PPUSH
2690: LD_VAR 0 4
2694: PPUSH
2695: LD_VAR 0 5
2699: PPUSH
2700: LD_INT 4
2702: PPUSH
2703: LD_INT 0
2705: PPUSH
2706: CALL_OW 60
// r := 0 ;
2710: LD_ADDR_VAR 0 8
2714: PUSH
2715: LD_INT 0
2717: ST_TO_ADDR
// end ;
2718: GO 2612
// end ;
2720: GO 2593
2722: POP
2723: POP
// end ; for r in starting_crates do
2724: LD_ADDR_VAR 0 8
2728: PUSH
2729: LD_EXP 12
2733: PUSH
2734: FOR_IN
2735: IFFALSE 2767
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
2737: LD_INT 1
2739: PPUSH
2740: LD_INT 5
2742: PPUSH
2743: LD_VAR 0 4
2747: PPUSH
2748: LD_VAR 0 5
2752: PPUSH
2753: LD_VAR 0 8
2757: PPUSH
2758: LD_INT 0
2760: PPUSH
2761: CALL_OW 60
2765: GO 2734
2767: POP
2768: POP
// commander := true ;
2769: LD_ADDR_LOC 1
2773: PUSH
2774: LD_INT 1
2776: ST_TO_ADDR
// soldiers_created := 0 ;
2777: LD_ADDR_LOC 4
2781: PUSH
2782: LD_INT 0
2784: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
2785: LD_ADDR_VAR 0 7
2789: PUSH
2790: DOUBLE
2791: LD_INT 1
2793: DEC
2794: ST_TO_ADDR
2795: LD_EXP 9
2799: PUSH
2800: FOR_TO
2801: IFFALSE 3023
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
2803: LD_ADDR_VAR 0 4
2807: PUSH
2808: LD_EXP 39
2812: PUSH
2813: LD_VAR 0 3
2817: ARRAY
2818: PUSH
2819: LD_VAR 0 7
2823: ARRAY
2824: PUSH
2825: LD_INT 1
2827: ARRAY
2828: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
2829: LD_ADDR_VAR 0 5
2833: PUSH
2834: LD_EXP 39
2838: PUSH
2839: LD_VAR 0 3
2843: ARRAY
2844: PUSH
2845: LD_VAR 0 7
2849: ARRAY
2850: PUSH
2851: LD_INT 2
2853: ARRAY
2854: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
2855: LD_ADDR_VAR 0 6
2859: PUSH
2860: LD_EXP 39
2864: PUSH
2865: LD_VAR 0 3
2869: ARRAY
2870: PUSH
2871: LD_VAR 0 7
2875: ARRAY
2876: PUSH
2877: LD_INT 3
2879: ARRAY
2880: ST_TO_ADDR
// bc_type := b_breastwork ;
2881: LD_ADDR_OWVAR 42
2885: PUSH
2886: LD_INT 31
2888: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2889: LD_ADDR_VAR 0 10
2893: PUSH
2894: LD_VAR 0 4
2898: PPUSH
2899: LD_VAR 0 5
2903: PPUSH
2904: LD_VAR 0 6
2908: PPUSH
2909: CALL_OW 47
2913: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
2914: LD_ADDR_VAR 0 4
2918: PUSH
2919: LD_VAR 0 4
2923: PPUSH
2924: LD_VAR 0 6
2928: PPUSH
2929: LD_INT 2
2931: PPUSH
2932: CALL_OW 272
2936: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
2937: LD_ADDR_VAR 0 5
2941: PUSH
2942: LD_VAR 0 5
2946: PPUSH
2947: LD_VAR 0 6
2951: PPUSH
2952: LD_INT 2
2954: PPUSH
2955: CALL_OW 273
2959: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
2960: LD_ADDR_VAR 0 9
2964: PUSH
2965: LD_INT 1
2967: PPUSH
2968: LD_INT 1
2970: PPUSH
2971: LD_VAR 0 4
2975: PPUSH
2976: LD_VAR 0 5
2980: PPUSH
2981: LD_INT 0
2983: PPUSH
2984: CALL 1840 0 5
2988: PUSH
2989: LD_INT 1
2991: ARRAY
2992: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
2993: LD_ADDR_LOC 4
2997: PUSH
2998: LD_LOC 4
3002: PUSH
3003: LD_INT 1
3005: PLUS
3006: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
3007: LD_VAR 0 9
3011: PPUSH
3012: LD_VAR 0 10
3016: PPUSH
3017: CALL_OW 120
// end ;
3021: GO 2800
3023: POP
3024: POP
// x := start_def [ pos ] [ 1 ] ;
3025: LD_ADDR_VAR 0 4
3029: PUSH
3030: LD_EXP 40
3034: PUSH
3035: LD_VAR 0 3
3039: ARRAY
3040: PUSH
3041: LD_INT 1
3043: ARRAY
3044: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
3045: LD_ADDR_VAR 0 5
3049: PUSH
3050: LD_EXP 40
3054: PUSH
3055: LD_VAR 0 3
3059: ARRAY
3060: PUSH
3061: LD_INT 2
3063: ARRAY
3064: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
3065: LD_LOC 8
3069: PUSH
3070: LD_EXP 9
3074: MINUS
3075: PPUSH
3076: LD_INT 1
3078: PPUSH
3079: LD_VAR 0 4
3083: PPUSH
3084: LD_VAR 0 5
3088: PPUSH
3089: LD_INT 5
3091: PPUSH
3092: CALL 1840 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
3096: LD_LOC 5
3100: PPUSH
3101: LD_INT 2
3103: PPUSH
3104: LD_VAR 0 4
3108: PPUSH
3109: LD_VAR 0 5
3113: PPUSH
3114: LD_INT 5
3116: PPUSH
3117: CALL 1840 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
3121: LD_LOC 7
3125: PPUSH
3126: LD_INT 3
3128: PPUSH
3129: LD_VAR 0 4
3133: PPUSH
3134: LD_VAR 0 5
3138: PPUSH
3139: LD_INT 5
3141: PPUSH
3142: CALL 1840 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
3146: LD_LOC 6
3150: PPUSH
3151: LD_INT 4
3153: PPUSH
3154: LD_VAR 0 4
3158: PPUSH
3159: LD_VAR 0 5
3163: PPUSH
3164: LD_INT 5
3166: PPUSH
3167: CALL 1840 0 5
// global_defined := true ;
3171: LD_ADDR_LOC 3
3175: PUSH
3176: LD_INT 1
3178: ST_TO_ADDR
// end ;
3179: LD_VAR 0 2
3183: RET
// function prepare_sides ; var i ; begin
3184: LD_INT 0
3186: PPUSH
3187: PPUSH
// global_units := [ ] ;
3188: LD_ADDR_LOC 2
3192: PUSH
3193: EMPTY
3194: ST_TO_ADDR
// global_defined := false ;
3195: LD_ADDR_LOC 3
3199: PUSH
3200: LD_INT 0
3202: ST_TO_ADDR
// CountClassMembers ;
3203: CALL 3253 0 0
// for i := 1 to 8 do
3207: LD_ADDR_VAR 0 2
3211: PUSH
3212: DOUBLE
3213: LD_INT 1
3215: DEC
3216: ST_TO_ADDR
3217: LD_INT 8
3219: PUSH
3220: FOR_TO
3221: IFFALSE 3246
// if Side_Positions [ i ] then
3223: LD_EXP 34
3227: PUSH
3228: LD_VAR 0 2
3232: ARRAY
3233: IFFALSE 3244
// prepare_side ( i ) ;
3235: LD_VAR 0 2
3239: PPUSH
3240: CALL 2355 0 1
3244: GO 3220
3246: POP
3247: POP
// end ;
3248: LD_VAR 0 1
3252: RET
// function CountClassMembers ; var Mode ; begin
3253: LD_INT 0
3255: PPUSH
3256: PPUSH
// Mode := 1 ;
3257: LD_ADDR_VAR 0 2
3261: PUSH
3262: LD_INT 1
3264: ST_TO_ADDR
// neng := number_of_people ;
3265: LD_ADDR_LOC 5
3269: PUSH
3270: LD_EXP 10
3274: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
3275: LD_ADDR_LOC 8
3279: PUSH
3280: LD_LOC 5
3284: PUSH
3285: LD_INT 4
3287: PUSH
3288: LD_INT 3
3290: PUSH
3291: EMPTY
3292: LIST
3293: LIST
3294: PUSH
3295: LD_VAR 0 2
3299: ARRAY
3300: DIV
3301: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
3302: LD_LOC 8
3306: PUSH
3307: LD_EXP 9
3311: LESS
3312: IFFALSE 3324
// nsol := number_of_breastworks ;
3314: LD_ADDR_LOC 8
3318: PUSH
3319: LD_EXP 9
3323: ST_TO_ADDR
// neng := neng - nsol ;
3324: LD_ADDR_LOC 5
3328: PUSH
3329: LD_LOC 5
3333: PUSH
3334: LD_LOC 8
3338: MINUS
3339: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
3340: LD_ADDR_LOC 6
3344: PUSH
3345: LD_LOC 5
3349: PUSH
3350: LD_INT 3
3352: PUSH
3353: LD_INT 2
3355: PUSH
3356: EMPTY
3357: LIST
3358: LIST
3359: PUSH
3360: LD_VAR 0 2
3364: ARRAY
3365: DIV
3366: ST_TO_ADDR
// if ( nsci < 1 ) then
3367: LD_LOC 6
3371: PUSH
3372: LD_INT 1
3374: LESS
3375: IFFALSE 3385
// nsci := 1 ;
3377: LD_ADDR_LOC 6
3381: PUSH
3382: LD_INT 1
3384: ST_TO_ADDR
// neng := neng - nsci ;
3385: LD_ADDR_LOC 5
3389: PUSH
3390: LD_LOC 5
3394: PUSH
3395: LD_LOC 6
3399: MINUS
3400: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
3401: LD_ADDR_LOC 7
3405: PUSH
3406: LD_LOC 5
3410: PUSH
3411: LD_INT 2
3413: DIV
3414: PUSH
3415: LD_INT 0
3417: PUSH
3418: EMPTY
3419: LIST
3420: LIST
3421: PUSH
3422: LD_VAR 0 2
3426: ARRAY
3427: ST_TO_ADDR
// neng := neng - nmech ;
3428: LD_ADDR_LOC 5
3432: PUSH
3433: LD_LOC 5
3437: PUSH
3438: LD_LOC 7
3442: MINUS
3443: ST_TO_ADDR
// if ( neng < 1 ) then
3444: LD_LOC 5
3448: PUSH
3449: LD_INT 1
3451: LESS
3452: IFFALSE 3462
// neng := 1 ;
3454: LD_ADDR_LOC 5
3458: PUSH
3459: LD_INT 1
3461: ST_TO_ADDR
// end ;
3462: LD_VAR 0 1
3466: RET
// starting var i ; begin enable_human_prediction := true ;
3467: LD_ADDR_OWVAR 51
3471: PUSH
3472: LD_INT 1
3474: ST_TO_ADDR
// mp_selectmsg := true ;
3475: LD_ADDR_OWVAR 13
3479: PUSH
3480: LD_INT 1
3482: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
3483: CALL 0 0 0
// init_map ;
3487: CALL 1201 0 0
// init_respawning ;
3491: CALL 3904 0 0
// set_shared_visions_and_alliances ;
3495: CALL 1552 0 0
// ResetFog ;
3499: CALL_OW 335
// prepare_sides ;
3503: CALL 3184 0 0
// ShowTimer ;
3507: CALL 4863 0 0
// music_nat := Side_Nations [ your_side ] ;
3511: LD_ADDR_OWVAR 71
3515: PUSH
3516: LD_EXP 35
3520: PUSH
3521: LD_OWVAR 2
3525: ARRAY
3526: ST_TO_ADDR
// SetSide ( rugeneral1 , GetSide ( FilterUnitsInArea ( Players1 , [ f_type , unit_human ] ) [ 1 ] ) ) ;
3527: LD_INT 129
3529: PPUSH
3530: LD_INT 1
3532: PPUSH
3533: LD_INT 21
3535: PUSH
3536: LD_INT 1
3538: PUSH
3539: EMPTY
3540: LIST
3541: LIST
3542: PPUSH
3543: CALL_OW 70
3547: PUSH
3548: LD_INT 1
3550: ARRAY
3551: PPUSH
3552: CALL_OW 255
3556: PPUSH
3557: CALL_OW 235
// SetSide ( rugeneral2 , GetSide ( FilterUnitsInArea ( Players2 , [ f_type , unit_human ] ) [ 1 ] ) ) ;
3561: LD_INT 134
3563: PPUSH
3564: LD_INT 2
3566: PPUSH
3567: LD_INT 21
3569: PUSH
3570: LD_INT 1
3572: PUSH
3573: EMPTY
3574: LIST
3575: LIST
3576: PPUSH
3577: CALL_OW 70
3581: PUSH
3582: LD_INT 1
3584: ARRAY
3585: PPUSH
3586: CALL_OW 255
3590: PPUSH
3591: CALL_OW 235
// SetSide ( rugeneral3 , GetSide ( FilterUnitsInArea ( Players3 , [ f_type , unit_human ] ) [ 1 ] ) ) ;
3595: LD_INT 131
3597: PPUSH
3598: LD_INT 3
3600: PPUSH
3601: LD_INT 21
3603: PUSH
3604: LD_INT 1
3606: PUSH
3607: EMPTY
3608: LIST
3609: LIST
3610: PPUSH
3611: CALL_OW 70
3615: PUSH
3616: LD_INT 1
3618: ARRAY
3619: PPUSH
3620: CALL_OW 255
3624: PPUSH
3625: CALL_OW 235
// SetSide ( rugeneral4 , GetSide ( FilterUnitsInArea ( Players4 , [ f_type , unit_human ] ) [ 1 ] ) ) ;
3629: LD_INT 132
3631: PPUSH
3632: LD_INT 4
3634: PPUSH
3635: LD_INT 21
3637: PUSH
3638: LD_INT 1
3640: PUSH
3641: EMPTY
3642: LIST
3643: LIST
3644: PPUSH
3645: CALL_OW 70
3649: PUSH
3650: LD_INT 1
3652: ARRAY
3653: PPUSH
3654: CALL_OW 255
3658: PPUSH
3659: CALL_OW 235
// SetSide ( rugeneral5 , GetSide ( FilterUnitsInArea ( Players5 , [ f_type , unit_human ] ) [ 1 ] ) ) ;
3663: LD_INT 133
3665: PPUSH
3666: LD_INT 5
3668: PPUSH
3669: LD_INT 21
3671: PUSH
3672: LD_INT 1
3674: PUSH
3675: EMPTY
3676: LIST
3677: LIST
3678: PPUSH
3679: CALL_OW 70
3683: PUSH
3684: LD_INT 1
3686: ARRAY
3687: PPUSH
3688: CALL_OW 255
3692: PPUSH
3693: CALL_OW 235
// p5 = GetSide ( FilterUnitsInArea ( Players5 , [ f_type , unit_human ] ) [ 1 ] ) ;
3697: LD_ADDR_EXP 50
3701: PUSH
3702: LD_INT 5
3704: PPUSH
3705: LD_INT 21
3707: PUSH
3708: LD_INT 1
3710: PUSH
3711: EMPTY
3712: LIST
3713: LIST
3714: PPUSH
3715: CALL_OW 70
3719: PUSH
3720: LD_INT 1
3722: ARRAY
3723: PPUSH
3724: CALL_OW 255
3728: ST_TO_ADDR
// p4 = GetSide ( FilterUnitsInArea ( Players4 , [ f_type , unit_human ] ) [ 1 ] ) ;
3729: LD_ADDR_EXP 49
3733: PUSH
3734: LD_INT 4
3736: PPUSH
3737: LD_INT 21
3739: PUSH
3740: LD_INT 1
3742: PUSH
3743: EMPTY
3744: LIST
3745: LIST
3746: PPUSH
3747: CALL_OW 70
3751: PUSH
3752: LD_INT 1
3754: ARRAY
3755: PPUSH
3756: CALL_OW 255
3760: ST_TO_ADDR
// p3 = GetSide ( FilterUnitsInArea ( Players3 , [ f_type , unit_human ] ) [ 1 ] ) ;
3761: LD_ADDR_EXP 48
3765: PUSH
3766: LD_INT 3
3768: PPUSH
3769: LD_INT 21
3771: PUSH
3772: LD_INT 1
3774: PUSH
3775: EMPTY
3776: LIST
3777: LIST
3778: PPUSH
3779: CALL_OW 70
3783: PUSH
3784: LD_INT 1
3786: ARRAY
3787: PPUSH
3788: CALL_OW 255
3792: ST_TO_ADDR
// p2 = GetSide ( FilterUnitsInArea ( Players2 , [ f_type , unit_human ] ) [ 1 ] ) ;
3793: LD_ADDR_EXP 47
3797: PUSH
3798: LD_INT 2
3800: PPUSH
3801: LD_INT 21
3803: PUSH
3804: LD_INT 1
3806: PUSH
3807: EMPTY
3808: LIST
3809: LIST
3810: PPUSH
3811: CALL_OW 70
3815: PUSH
3816: LD_INT 1
3818: ARRAY
3819: PPUSH
3820: CALL_OW 255
3824: ST_TO_ADDR
// p1 = GetSide ( FilterUnitsInArea ( Players1 , [ f_type , unit_human ] ) [ 1 ] ) ;
3825: LD_ADDR_EXP 46
3829: PUSH
3830: LD_INT 1
3832: PPUSH
3833: LD_INT 21
3835: PUSH
3836: LD_INT 1
3838: PUSH
3839: EMPTY
3840: LIST
3841: LIST
3842: PPUSH
3843: CALL_OW 70
3847: PUSH
3848: LD_INT 1
3850: ARRAY
3851: PPUSH
3852: CALL_OW 255
3856: ST_TO_ADDR
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
3857: LD_EXP 40
3861: PUSH
3862: LD_EXP 34
3866: PUSH
3867: LD_OWVAR 2
3871: ARRAY
3872: ARRAY
3873: PUSH
3874: LD_INT 1
3876: ARRAY
3877: PPUSH
3878: LD_EXP 40
3882: PUSH
3883: LD_EXP 34
3887: PUSH
3888: LD_OWVAR 2
3892: ARRAY
3893: ARRAY
3894: PUSH
3895: LD_INT 2
3897: ARRAY
3898: PPUSH
3899: CALL_OW 86
// end ; end_of_file
3903: END
// var respawn , inqueue ; export function init_respawning ; begin
3904: LD_INT 0
3906: PPUSH
// respawn := Rand ( 1 , 8 ) ;
3907: LD_ADDR_LOC 9
3911: PUSH
3912: LD_INT 1
3914: PPUSH
3915: LD_INT 8
3917: PPUSH
3918: CALL_OW 12
3922: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
3923: LD_ADDR_LOC 10
3927: PUSH
3928: LD_INT 0
3930: PUSH
3931: LD_INT 0
3933: PUSH
3934: LD_INT 0
3936: PUSH
3937: LD_INT 0
3939: PUSH
3940: LD_INT 0
3942: PUSH
3943: LD_INT 0
3945: PUSH
3946: LD_INT 0
3948: PUSH
3949: LD_INT 0
3951: PUSH
3952: EMPTY
3953: LIST
3954: LIST
3955: LIST
3956: LIST
3957: LIST
3958: LIST
3959: LIST
3960: LIST
3961: ST_TO_ADDR
// end ;
3962: LD_VAR 0 1
3966: RET
// every 0 0$1 + 0 0$0.5 do var n , dep , aktresp ;
3967: GO 3969
3969: DISABLE
3970: LD_INT 0
3972: PPUSH
3973: PPUSH
3974: PPUSH
// begin if respawning_time_max = 0 then
3975: LD_EXP 19
3979: PUSH
3980: LD_INT 0
3982: EQUAL
3983: IFFALSE 3987
// exit ;
3985: GO 4392
// if respawn = 8 then
3987: LD_LOC 9
3991: PUSH
3992: LD_INT 8
3994: EQUAL
3995: IFFALSE 4007
// respawn := 1 else
3997: LD_ADDR_LOC 9
4001: PUSH
4002: LD_INT 1
4004: ST_TO_ADDR
4005: GO 4021
// respawn := respawn + 1 ;
4007: LD_ADDR_LOC 9
4011: PUSH
4012: LD_LOC 9
4016: PUSH
4017: LD_INT 1
4019: PLUS
4020: ST_TO_ADDR
// if Side_Positions [ respawn ] and not inqueue [ respawn ] then
4021: LD_EXP 34
4025: PUSH
4026: LD_LOC 9
4030: ARRAY
4031: PUSH
4032: LD_LOC 10
4036: PUSH
4037: LD_LOC 9
4041: ARRAY
4042: NOT
4043: AND
4044: IFFALSE 4391
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
4046: LD_ADDR_VAR 0 1
4050: PUSH
4051: LD_INT 21
4053: PUSH
4054: LD_INT 1
4056: PUSH
4057: EMPTY
4058: LIST
4059: LIST
4060: PUSH
4061: LD_INT 22
4063: PUSH
4064: LD_LOC 9
4068: PUSH
4069: EMPTY
4070: LIST
4071: LIST
4072: PUSH
4073: LD_INT 3
4075: PUSH
4076: LD_INT 23
4078: PUSH
4079: LD_INT 0
4081: PUSH
4082: EMPTY
4083: LIST
4084: LIST
4085: PUSH
4086: EMPTY
4087: LIST
4088: LIST
4089: LIST
4090: LIST
4091: PPUSH
4092: CALL_OW 69
4096: ST_TO_ADDR
// if n < number_of_people then
4097: LD_VAR 0 1
4101: PUSH
4102: LD_EXP 10
4106: LESS
4107: IFFALSE 4388
// begin dep := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] , [ f_side , respawn ] ] ) ;
4109: LD_ADDR_VAR 0 2
4113: PUSH
4114: LD_INT 21
4116: PUSH
4117: LD_INT 3
4119: PUSH
4120: EMPTY
4121: LIST
4122: LIST
4123: PUSH
4124: LD_INT 2
4126: PUSH
4127: LD_INT 30
4129: PUSH
4130: LD_INT 0
4132: PUSH
4133: EMPTY
4134: LIST
4135: LIST
4136: PUSH
4137: LD_INT 30
4139: PUSH
4140: LD_INT 1
4142: PUSH
4143: EMPTY
4144: LIST
4145: LIST
4146: PUSH
4147: EMPTY
4148: LIST
4149: LIST
4150: LIST
4151: PUSH
4152: LD_INT 50
4154: PUSH
4155: EMPTY
4156: LIST
4157: PUSH
4158: LD_INT 22
4160: PUSH
4161: LD_LOC 9
4165: PUSH
4166: EMPTY
4167: LIST
4168: LIST
4169: PUSH
4170: EMPTY
4171: LIST
4172: LIST
4173: LIST
4174: LIST
4175: PPUSH
4176: CALL_OW 69
4180: ST_TO_ADDR
// if dep then
4181: LD_VAR 0 2
4185: IFFALSE 4385
// begin aktresp := respawn ;
4187: LD_ADDR_VAR 0 3
4191: PUSH
4192: LD_LOC 9
4196: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , true ) ;
4197: LD_ADDR_LOC 10
4201: PUSH
4202: LD_LOC 10
4206: PPUSH
4207: LD_VAR 0 3
4211: PPUSH
4212: LD_INT 1
4214: PPUSH
4215: CALL_OW 1
4219: ST_TO_ADDR
// enable ;
4220: ENABLE
// wait ( rand ( respawning_time_min , respawning_time_max ) ) ;
4221: LD_EXP 18
4225: PPUSH
4226: LD_EXP 19
4230: PPUSH
4231: CALL_OW 12
4235: PPUSH
4236: CALL_OW 67
// inqueue := Replace ( inqueue , aktresp , false ) ;
4240: LD_ADDR_LOC 10
4244: PUSH
4245: LD_LOC 10
4249: PPUSH
4250: LD_VAR 0 3
4254: PPUSH
4255: LD_INT 0
4257: PPUSH
4258: CALL_OW 1
4262: ST_TO_ADDR
// hc_name :=  ;
4263: LD_ADDR_OWVAR 26
4267: PUSH
4268: LD_STRING 
4270: ST_TO_ADDR
// hc_importance := 0 ;
4271: LD_ADDR_OWVAR 32
4275: PUSH
4276: LD_INT 0
4278: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , skill_level div 2 ) ;
4279: LD_INT 0
4281: PPUSH
4282: LD_INT 0
4284: PPUSH
4285: LD_EXP 11
4289: PUSH
4290: LD_INT 2
4292: DIV
4293: PPUSH
4294: CALL_OW 380
// uc_nation := Side_Nations [ aktresp ] ;
4298: LD_ADDR_OWVAR 21
4302: PUSH
4303: LD_EXP 35
4307: PUSH
4308: LD_VAR 0 3
4312: ARRAY
4313: ST_TO_ADDR
// uc_side := aktresp ;
4314: LD_ADDR_OWVAR 20
4318: PUSH
4319: LD_VAR 0 3
4323: ST_TO_ADDR
// dep := dep [ Rand ( 1 , dep ) ] ;
4324: LD_ADDR_VAR 0 2
4328: PUSH
4329: LD_VAR 0 2
4333: PUSH
4334: LD_INT 1
4336: PPUSH
4337: LD_VAR 0 2
4341: PPUSH
4342: CALL_OW 12
4346: ARRAY
4347: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( dep ) , GetY ( dep ) , 7 , true ) ;
4348: CALL_OW 44
4352: PPUSH
4353: LD_VAR 0 2
4357: PPUSH
4358: CALL_OW 250
4362: PPUSH
4363: LD_VAR 0 2
4367: PPUSH
4368: CALL_OW 251
4372: PPUSH
4373: LD_INT 7
4375: PPUSH
4376: LD_INT 1
4378: PPUSH
4379: CALL_OW 50
// end else
4383: GO 4386
// enable ;
4385: ENABLE
// end else
4386: GO 4389
// enable ;
4388: ENABLE
// end else
4389: GO 4392
// enable ;
4391: ENABLE
// end ; end_of_file
4392: PPOPN 3
4394: END
// every 1 1$0 + 0 0$0.3 marked 10 do
4395: GO 4397
4397: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
4398: LD_INT 4
4400: PPUSH
4401: LD_INT 5
4403: PPUSH
4404: CALL_OW 12
4408: PPUSH
4409: LD_INT 1
4411: PPUSH
4412: CALL_OW 57
// enable ;
4416: ENABLE
// end ;
4417: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
4418: GO 4420
4420: DISABLE
4421: LD_INT 0
4423: PPUSH
4424: PPUSH
// begin case tick of 1 .. 1 1$0 :
4425: LD_OWVAR 1
4429: PUSH
4430: LD_INT 1
4432: DOUBLE
4433: GREATEREQUAL
4434: IFFALSE 4442
4436: LD_INT 2100
4438: DOUBLE
4439: LESSEQUAL
4440: IFTRUE 4444
4442: GO 4472
4444: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
4445: LD_EXP 14
4449: PUSH
4450: LD_INT 100
4452: DIVREAL
4453: PUSH
4454: LD_INT 350
4456: PPUSH
4457: LD_INT 1050
4459: PPUSH
4460: CALL_OW 12
4464: MUL
4465: PPUSH
4466: CALL_OW 67
4470: GO 4774
4472: LD_INT 2100
4474: PUSH
4475: LD_INT 1
4477: PLUS
4478: DOUBLE
4479: GREATEREQUAL
4480: IFFALSE 4488
4482: LD_INT 10500
4484: DOUBLE
4485: LESSEQUAL
4486: IFTRUE 4490
4488: GO 4518
4490: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
4491: LD_EXP 14
4495: PUSH
4496: LD_INT 100
4498: DIVREAL
4499: PUSH
4500: LD_INT 1050
4502: PPUSH
4503: LD_INT 1575
4505: PPUSH
4506: CALL_OW 12
4510: MUL
4511: PPUSH
4512: CALL_OW 67
4516: GO 4774
4518: LD_INT 10500
4520: PUSH
4521: LD_INT 1
4523: PLUS
4524: DOUBLE
4525: GREATEREQUAL
4526: IFFALSE 4534
4528: LD_INT 21000
4530: DOUBLE
4531: LESSEQUAL
4532: IFTRUE 4536
4534: GO 4564
4536: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
4537: LD_EXP 14
4541: PUSH
4542: LD_INT 100
4544: DIVREAL
4545: PUSH
4546: LD_INT 1575
4548: PPUSH
4549: LD_INT 2100
4551: PPUSH
4552: CALL_OW 12
4556: MUL
4557: PPUSH
4558: CALL_OW 67
4562: GO 4774
4564: LD_INT 21000
4566: PUSH
4567: LD_INT 1
4569: PLUS
4570: DOUBLE
4571: GREATEREQUAL
4572: IFFALSE 4580
4574: LD_INT 42000
4576: DOUBLE
4577: LESSEQUAL
4578: IFTRUE 4582
4580: GO 4610
4582: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
4583: LD_EXP 14
4587: PUSH
4588: LD_INT 100
4590: DIVREAL
4591: PUSH
4592: LD_INT 2100
4594: PPUSH
4595: LD_INT 2625
4597: PPUSH
4598: CALL_OW 12
4602: MUL
4603: PPUSH
4604: CALL_OW 67
4608: GO 4774
4610: LD_INT 42000
4612: PUSH
4613: LD_INT 1
4615: PLUS
4616: DOUBLE
4617: GREATEREQUAL
4618: IFFALSE 4626
4620: LD_INT 63000
4622: DOUBLE
4623: LESSEQUAL
4624: IFTRUE 4628
4626: GO 4656
4628: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; 30 30$0 + 1 .. 50 50$0 :
4629: LD_EXP 14
4633: PUSH
4634: LD_INT 100
4636: DIVREAL
4637: PUSH
4638: LD_INT 2625
4640: PPUSH
4641: LD_INT 3150
4643: PPUSH
4644: CALL_OW 12
4648: MUL
4649: PPUSH
4650: CALL_OW 67
4654: GO 4774
4656: LD_INT 63000
4658: PUSH
4659: LD_INT 1
4661: PLUS
4662: DOUBLE
4663: GREATEREQUAL
4664: IFFALSE 4672
4666: LD_INT 105000
4668: DOUBLE
4669: LESSEQUAL
4670: IFTRUE 4674
4672: GO 4702
4674: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$30 , 1 1$45 ) ) ; 50 50$0 + 1 .. 300 300$0 :
4675: LD_EXP 14
4679: PUSH
4680: LD_INT 100
4682: DIVREAL
4683: PUSH
4684: LD_INT 3150
4686: PPUSH
4687: LD_INT 3675
4689: PPUSH
4690: CALL_OW 12
4694: MUL
4695: PPUSH
4696: CALL_OW 67
4700: GO 4774
4702: LD_INT 105000
4704: PUSH
4705: LD_INT 1
4707: PLUS
4708: DOUBLE
4709: GREATEREQUAL
4710: IFFALSE 4718
4712: LD_INT 630000
4714: DOUBLE
4715: LESSEQUAL
4716: IFTRUE 4720
4718: GO 4748
4720: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$45 , 2 2$0 ) ) ; else
4721: LD_EXP 14
4725: PUSH
4726: LD_INT 100
4728: DIVREAL
4729: PUSH
4730: LD_INT 3675
4732: PPUSH
4733: LD_INT 4200
4735: PPUSH
4736: CALL_OW 12
4740: MUL
4741: PPUSH
4742: CALL_OW 67
4746: GO 4774
4748: POP
// Wait ( shipments_density / 100 * Rand ( 2 2$0 , 2 2$30 ) ) ; end ;
4749: LD_EXP 14
4753: PUSH
4754: LD_INT 100
4756: DIVREAL
4757: PUSH
4758: LD_INT 4200
4760: PPUSH
4761: LD_INT 5250
4763: PPUSH
4764: CALL_OW 12
4768: MUL
4769: PPUSH
4770: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
4774: LD_ADDR_VAR 0 2
4778: PUSH
4779: LD_INT 3
4781: PPUSH
4782: LD_INT 5
4784: PPUSH
4785: CALL_OW 12
4789: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
4790: LD_ADDR_VAR 0 1
4794: PUSH
4795: LD_EXP 34
4799: PUSH
4800: LD_INT 0
4802: PUSH
4803: EMPTY
4804: LIST
4805: DIFF
4806: PUSH
4807: FOR_IN
4808: IFFALSE 4857
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
4810: LD_VAR 0 2
4814: PPUSH
4815: LD_EXP 40
4819: PUSH
4820: LD_VAR 0 1
4824: ARRAY
4825: PUSH
4826: LD_INT 1
4828: ARRAY
4829: PPUSH
4830: LD_EXP 40
4834: PUSH
4835: LD_VAR 0 1
4839: ARRAY
4840: PUSH
4841: LD_INT 2
4843: ARRAY
4844: PPUSH
4845: LD_INT 20
4847: PPUSH
4848: LD_INT 1
4850: PPUSH
4851: CALL_OW 56
4855: GO 4807
4857: POP
4858: POP
// enable ;
4859: ENABLE
// end ; end_of_file
4860: PPOPN 2
4862: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
4863: LD_INT 0
4865: PPUSH
4866: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
4867: LD_ADDR_VAR 0 2
4871: PUSH
4872: LD_STRING #Multi1x1-Time
4874: PUSH
4875: LD_OWVAR 1
4879: PUSH
4880: EMPTY
4881: LIST
4882: LIST
4883: ST_TO_ADDR
// if ( ExtraStrings ) then
4884: LD_EXP 51
4888: IFFALSE 4910
// AllStrings := AllStrings ^  ^ ExtraStrings ;
4890: LD_ADDR_VAR 0 2
4894: PUSH
4895: LD_VAR 0 2
4899: PUSH
4900: LD_STRING 
4902: ADD
4903: PUSH
4904: LD_EXP 51
4908: ADD
4909: ST_TO_ADDR
// Display_Strings := AllStrings ;
4910: LD_ADDR_OWVAR 47
4914: PUSH
4915: LD_VAR 0 2
4919: ST_TO_ADDR
// end ;
4920: LD_VAR 0 1
4924: RET
// every 0 0$1 do
4925: GO 4927
4927: DISABLE
// begin ShowTimer ;
4928: CALL 4863 0 0
// Display_Strings = [ p1 , p2 , p3 , p4 , p5 ] ;
4932: LD_ADDR_OWVAR 47
4936: PUSH
4937: LD_EXP 46
4941: PUSH
4942: LD_EXP 47
4946: PUSH
4947: LD_EXP 48
4951: PUSH
4952: LD_EXP 49
4956: PUSH
4957: LD_EXP 50
4961: PUSH
4962: EMPTY
4963: LIST
4964: LIST
4965: LIST
4966: LIST
4967: LIST
4968: ST_TO_ADDR
// enable ;
4969: ENABLE
// end ; end_of_file
4970: END
// every 0 0$2 do
4971: GO 4973
4973: DISABLE
// begin end ;
4974: END
// every 0 0$3 do
4975: GO 4977
4977: DISABLE
// begin if Russian1AI = 1 then
4978: LD_EXP 20
4982: PUSH
4983: LD_INT 1
4985: EQUAL
4986: IFFALSE 5000
// begin SetSide ( rugeneral1 , cpu1 ) ;
4988: LD_INT 129
4990: PPUSH
4991: LD_EXP 55
4995: PPUSH
4996: CALL_OW 235
// end ; if Russian2AI = 1 then
5000: LD_EXP 21
5004: PUSH
5005: LD_INT 1
5007: EQUAL
5008: IFFALSE 5022
// begin SetSide ( rugeneral2 , cpu2 ) ;
5010: LD_INT 134
5012: PPUSH
5013: LD_EXP 56
5017: PPUSH
5018: CALL_OW 235
// end ; if Russian3AI = 1 then
5022: LD_EXP 22
5026: PUSH
5027: LD_INT 1
5029: EQUAL
5030: IFFALSE 5044
// begin SetSide ( rugeneral3 , cpu3 ) ;
5032: LD_INT 131
5034: PPUSH
5035: LD_EXP 57
5039: PPUSH
5040: CALL_OW 235
// end ; if Russian4AI = 1 then
5044: LD_EXP 23
5048: PUSH
5049: LD_INT 1
5051: EQUAL
5052: IFFALSE 5066
// begin SetSide ( rugeneral4 , cpu4 ) ;
5054: LD_INT 132
5056: PPUSH
5057: LD_EXP 58
5061: PPUSH
5062: CALL_OW 235
// end ; if Russian5AI = 1 then
5066: LD_EXP 24
5070: PUSH
5071: LD_INT 1
5073: EQUAL
5074: IFFALSE 5088
// begin SetSide ( rugeneral5 , cpu5 ) ;
5076: LD_INT 133
5078: PPUSH
5079: LD_EXP 59
5083: PPUSH
5084: CALL_OW 235
// end ; if GetSide ( rugeneral1 ) = 0 then
5088: LD_INT 129
5090: PPUSH
5091: CALL_OW 255
5095: PUSH
5096: LD_INT 0
5098: EQUAL
5099: IFFALSE 5108
// begin RemoveUnit ( rugeneral1 ) ;
5101: LD_INT 129
5103: PPUSH
5104: CALL_OW 64
// end ; if GetSide ( rugeneral2 ) = 0 then
5108: LD_INT 134
5110: PPUSH
5111: CALL_OW 255
5115: PUSH
5116: LD_INT 0
5118: EQUAL
5119: IFFALSE 5128
// begin RemoveUnit ( rugeneral2 ) ;
5121: LD_INT 134
5123: PPUSH
5124: CALL_OW 64
// end ; if GetSide ( rugeneral3 ) = 0 then
5128: LD_INT 131
5130: PPUSH
5131: CALL_OW 255
5135: PUSH
5136: LD_INT 0
5138: EQUAL
5139: IFFALSE 5148
// begin RemoveUnit ( rugeneral3 ) ;
5141: LD_INT 131
5143: PPUSH
5144: CALL_OW 64
// end ; if GetSide ( rugeneral4 ) = 0 then
5148: LD_INT 132
5150: PPUSH
5151: CALL_OW 255
5155: PUSH
5156: LD_INT 0
5158: EQUAL
5159: IFFALSE 5168
// begin RemoveUnit ( rugeneral4 ) ;
5161: LD_INT 132
5163: PPUSH
5164: CALL_OW 64
// end ; if GetSide ( rugeneral5 ) = 0 then
5168: LD_INT 133
5170: PPUSH
5171: CALL_OW 255
5175: PUSH
5176: LD_INT 0
5178: EQUAL
5179: IFFALSE 5188
// begin RemoveUnit ( rugeneral5 ) ;
5181: LD_INT 133
5183: PPUSH
5184: CALL_OW 64
// end ; end ;
5188: END
// every 0 0$3 trigger GetAttitude ( p1 , p2 ) = att_friend and GetAttitude ( p2 , p1 ) = att_friend do
5189: LD_EXP 46
5193: PPUSH
5194: LD_EXP 47
5198: PPUSH
5199: CALL_OW 81
5203: PUSH
5204: LD_INT 1
5206: EQUAL
5207: PUSH
5208: LD_EXP 47
5212: PPUSH
5213: LD_EXP 46
5217: PPUSH
5218: CALL_OW 81
5222: PUSH
5223: LD_INT 1
5225: EQUAL
5226: AND
5227: IFFALSE 5246
5229: GO 5231
5231: DISABLE
// begin ChangeSideFog ( p2 , p1 ) ;
5232: LD_EXP 47
5236: PPUSH
5237: LD_EXP 46
5241: PPUSH
5242: CALL_OW 343
// end ;
5246: END
// every 0 0$3 trigger GetAttitude ( p1 , p3 ) = att_friend and GetAttitude ( p3 , p1 ) = att_friend do
5247: LD_EXP 46
5251: PPUSH
5252: LD_EXP 48
5256: PPUSH
5257: CALL_OW 81
5261: PUSH
5262: LD_INT 1
5264: EQUAL
5265: PUSH
5266: LD_EXP 48
5270: PPUSH
5271: LD_EXP 46
5275: PPUSH
5276: CALL_OW 81
5280: PUSH
5281: LD_INT 1
5283: EQUAL
5284: AND
5285: IFFALSE 5304
5287: GO 5289
5289: DISABLE
// begin ChangeSideFog ( p3 , p1 ) ;
5290: LD_EXP 48
5294: PPUSH
5295: LD_EXP 46
5299: PPUSH
5300: CALL_OW 343
// end ;
5304: END
// every 0 0$3 trigger GetAttitude ( p1 , p4 ) = att_friend and GetAttitude ( p4 , p1 ) = att_friend do
5305: LD_EXP 46
5309: PPUSH
5310: LD_EXP 49
5314: PPUSH
5315: CALL_OW 81
5319: PUSH
5320: LD_INT 1
5322: EQUAL
5323: PUSH
5324: LD_EXP 49
5328: PPUSH
5329: LD_EXP 46
5333: PPUSH
5334: CALL_OW 81
5338: PUSH
5339: LD_INT 1
5341: EQUAL
5342: AND
5343: IFFALSE 5362
5345: GO 5347
5347: DISABLE
// begin ChangeSideFog ( p4 , p1 ) ;
5348: LD_EXP 49
5352: PPUSH
5353: LD_EXP 46
5357: PPUSH
5358: CALL_OW 343
// end ;
5362: END
// every 0 0$3 trigger GetAttitude ( p1 , p5 ) = att_friend and GetAttitude ( p5 , p1 ) = att_friend do
5363: LD_EXP 46
5367: PPUSH
5368: LD_EXP 50
5372: PPUSH
5373: CALL_OW 81
5377: PUSH
5378: LD_INT 1
5380: EQUAL
5381: PUSH
5382: LD_EXP 50
5386: PPUSH
5387: LD_EXP 46
5391: PPUSH
5392: CALL_OW 81
5396: PUSH
5397: LD_INT 1
5399: EQUAL
5400: AND
5401: IFFALSE 5420
5403: GO 5405
5405: DISABLE
// begin ChangeSideFog ( p5 , p1 ) ;
5406: LD_EXP 50
5410: PPUSH
5411: LD_EXP 46
5415: PPUSH
5416: CALL_OW 343
// end ; end_of_file
5420: END
// every 1 do
5421: GO 5423
5423: DISABLE
// begin SelectSide ;
5424: CALL 5433 0 0
// Resetfog ;
5428: CALL_OW 335
// end ;
5432: END
// export player1 , player2 , player3 , cpu1 , cpu2 , cpu3 , cpu4 , cpu5 , enabled_colours ; export function SelectSide ; var i , un ; begin
5433: LD_INT 0
5435: PPUSH
5436: PPUSH
5437: PPUSH
// enabled_colours = [ ] ;
5438: LD_ADDR_EXP 60
5442: PUSH
5443: EMPTY
5444: ST_TO_ADDR
// if Russian1AI = 1 then
5445: LD_EXP 20
5449: PUSH
5450: LD_INT 1
5452: EQUAL
5453: IFFALSE 5643
// begin for i = 1 to 8 do
5455: LD_ADDR_VAR 0 2
5459: PUSH
5460: DOUBLE
5461: LD_INT 1
5463: DEC
5464: ST_TO_ADDR
5465: LD_INT 8
5467: PUSH
5468: FOR_TO
5469: IFFALSE 5583
// begin if Side_Positions [ i ] = 0 then
5471: LD_EXP 34
5475: PUSH
5476: LD_VAR 0 2
5480: ARRAY
5481: PUSH
5482: LD_INT 0
5484: EQUAL
5485: IFFALSE 5503
// enabled_colours = enabled_colours ^ i ;
5487: LD_ADDR_EXP 60
5491: PUSH
5492: LD_EXP 60
5496: PUSH
5497: LD_VAR 0 2
5501: ADD
5502: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
5503: LD_EXP 34
5507: PUSH
5508: LD_VAR 0 2
5512: ARRAY
5513: PUSH
5514: LD_INT 2
5516: EQUAL
5517: IFFALSE 5529
// player1 = i ;
5519: LD_ADDR_EXP 52
5523: PUSH
5524: LD_VAR 0 2
5528: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
5529: LD_EXP 34
5533: PUSH
5534: LD_VAR 0 2
5538: ARRAY
5539: PUSH
5540: LD_INT 3
5542: EQUAL
5543: IFFALSE 5555
// player2 = i ;
5545: LD_ADDR_EXP 53
5549: PUSH
5550: LD_VAR 0 2
5554: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
5555: LD_EXP 34
5559: PUSH
5560: LD_VAR 0 2
5564: ARRAY
5565: PUSH
5566: LD_INT 4
5568: EQUAL
5569: IFFALSE 5581
// player3 = i ;
5571: LD_ADDR_EXP 54
5575: PUSH
5576: LD_VAR 0 2
5580: ST_TO_ADDR
// end ;
5581: GO 5468
5583: POP
5584: POP
// if not Side_Positions [ 6 ] > 0 then
5585: LD_EXP 34
5589: PUSH
5590: LD_INT 6
5592: ARRAY
5593: PUSH
5594: LD_INT 0
5596: GREATER
5597: NOT
5598: IFFALSE 5610
// cpu1 := 1 else
5600: LD_ADDR_EXP 55
5604: PUSH
5605: LD_INT 1
5607: ST_TO_ADDR
5608: GO 5643
// if not Side_Positions [ 7 ] > 0 then
5610: LD_EXP 34
5614: PUSH
5615: LD_INT 7
5617: ARRAY
5618: PUSH
5619: LD_INT 0
5621: GREATER
5622: NOT
5623: IFFALSE 5635
// cpu1 := 2 else
5625: LD_ADDR_EXP 55
5629: PUSH
5630: LD_INT 2
5632: ST_TO_ADDR
5633: GO 5643
// cpu1 := 3 ;
5635: LD_ADDR_EXP 55
5639: PUSH
5640: LD_INT 3
5642: ST_TO_ADDR
// end ; if Russian2AI = 1 then
5643: LD_EXP 21
5647: PUSH
5648: LD_INT 1
5650: EQUAL
5651: IFFALSE 5841
// begin for i = 1 to 8 do
5653: LD_ADDR_VAR 0 2
5657: PUSH
5658: DOUBLE
5659: LD_INT 1
5661: DEC
5662: ST_TO_ADDR
5663: LD_INT 8
5665: PUSH
5666: FOR_TO
5667: IFFALSE 5781
// begin if Side_Positions [ i ] = 0 then
5669: LD_EXP 34
5673: PUSH
5674: LD_VAR 0 2
5678: ARRAY
5679: PUSH
5680: LD_INT 0
5682: EQUAL
5683: IFFALSE 5701
// enabled_colours = enabled_colours ^ i ;
5685: LD_ADDR_EXP 60
5689: PUSH
5690: LD_EXP 60
5694: PUSH
5695: LD_VAR 0 2
5699: ADD
5700: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
5701: LD_EXP 34
5705: PUSH
5706: LD_VAR 0 2
5710: ARRAY
5711: PUSH
5712: LD_INT 2
5714: EQUAL
5715: IFFALSE 5727
// player1 = i ;
5717: LD_ADDR_EXP 52
5721: PUSH
5722: LD_VAR 0 2
5726: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
5727: LD_EXP 34
5731: PUSH
5732: LD_VAR 0 2
5736: ARRAY
5737: PUSH
5738: LD_INT 3
5740: EQUAL
5741: IFFALSE 5753
// player2 = i ;
5743: LD_ADDR_EXP 53
5747: PUSH
5748: LD_VAR 0 2
5752: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
5753: LD_EXP 34
5757: PUSH
5758: LD_VAR 0 2
5762: ARRAY
5763: PUSH
5764: LD_INT 4
5766: EQUAL
5767: IFFALSE 5779
// player3 = i ;
5769: LD_ADDR_EXP 54
5773: PUSH
5774: LD_VAR 0 2
5778: ST_TO_ADDR
// end ;
5779: GO 5666
5781: POP
5782: POP
// if not Side_Positions [ 6 ] > 0 then
5783: LD_EXP 34
5787: PUSH
5788: LD_INT 6
5790: ARRAY
5791: PUSH
5792: LD_INT 0
5794: GREATER
5795: NOT
5796: IFFALSE 5808
// cpu2 := 4 else
5798: LD_ADDR_EXP 56
5802: PUSH
5803: LD_INT 4
5805: ST_TO_ADDR
5806: GO 5841
// if not Side_Positions [ 7 ] > 0 then
5808: LD_EXP 34
5812: PUSH
5813: LD_INT 7
5815: ARRAY
5816: PUSH
5817: LD_INT 0
5819: GREATER
5820: NOT
5821: IFFALSE 5833
// cpu2 := 5 else
5823: LD_ADDR_EXP 56
5827: PUSH
5828: LD_INT 5
5830: ST_TO_ADDR
5831: GO 5841
// cpu2 := 6 ;
5833: LD_ADDR_EXP 56
5837: PUSH
5838: LD_INT 6
5840: ST_TO_ADDR
// end ; if Russian3AI = 1 then
5841: LD_EXP 22
5845: PUSH
5846: LD_INT 1
5848: EQUAL
5849: IFFALSE 6039
// begin for i = 1 to 8 do
5851: LD_ADDR_VAR 0 2
5855: PUSH
5856: DOUBLE
5857: LD_INT 1
5859: DEC
5860: ST_TO_ADDR
5861: LD_INT 8
5863: PUSH
5864: FOR_TO
5865: IFFALSE 5979
// begin if Side_Positions [ i ] = 0 then
5867: LD_EXP 34
5871: PUSH
5872: LD_VAR 0 2
5876: ARRAY
5877: PUSH
5878: LD_INT 0
5880: EQUAL
5881: IFFALSE 5899
// enabled_colours = enabled_colours ^ i ;
5883: LD_ADDR_EXP 60
5887: PUSH
5888: LD_EXP 60
5892: PUSH
5893: LD_VAR 0 2
5897: ADD
5898: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
5899: LD_EXP 34
5903: PUSH
5904: LD_VAR 0 2
5908: ARRAY
5909: PUSH
5910: LD_INT 2
5912: EQUAL
5913: IFFALSE 5925
// player1 = i ;
5915: LD_ADDR_EXP 52
5919: PUSH
5920: LD_VAR 0 2
5924: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
5925: LD_EXP 34
5929: PUSH
5930: LD_VAR 0 2
5934: ARRAY
5935: PUSH
5936: LD_INT 3
5938: EQUAL
5939: IFFALSE 5951
// player2 = i ;
5941: LD_ADDR_EXP 53
5945: PUSH
5946: LD_VAR 0 2
5950: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
5951: LD_EXP 34
5955: PUSH
5956: LD_VAR 0 2
5960: ARRAY
5961: PUSH
5962: LD_INT 4
5964: EQUAL
5965: IFFALSE 5977
// player3 = i ;
5967: LD_ADDR_EXP 54
5971: PUSH
5972: LD_VAR 0 2
5976: ST_TO_ADDR
// end ;
5977: GO 5864
5979: POP
5980: POP
// if not Side_Positions [ 6 ] > 0 then
5981: LD_EXP 34
5985: PUSH
5986: LD_INT 6
5988: ARRAY
5989: PUSH
5990: LD_INT 0
5992: GREATER
5993: NOT
5994: IFFALSE 6006
// cpu3 := 7 else
5996: LD_ADDR_EXP 57
6000: PUSH
6001: LD_INT 7
6003: ST_TO_ADDR
6004: GO 6039
// if not Side_Positions [ 7 ] > 0 then
6006: LD_EXP 34
6010: PUSH
6011: LD_INT 7
6013: ARRAY
6014: PUSH
6015: LD_INT 0
6017: GREATER
6018: NOT
6019: IFFALSE 6031
// cpu3 := 8 else
6021: LD_ADDR_EXP 57
6025: PUSH
6026: LD_INT 8
6028: ST_TO_ADDR
6029: GO 6039
// cpu3 := 1 ;
6031: LD_ADDR_EXP 57
6035: PUSH
6036: LD_INT 1
6038: ST_TO_ADDR
// end ; if Russian4AI = 1 then
6039: LD_EXP 23
6043: PUSH
6044: LD_INT 1
6046: EQUAL
6047: IFFALSE 6237
// begin for i = 1 to 8 do
6049: LD_ADDR_VAR 0 2
6053: PUSH
6054: DOUBLE
6055: LD_INT 1
6057: DEC
6058: ST_TO_ADDR
6059: LD_INT 8
6061: PUSH
6062: FOR_TO
6063: IFFALSE 6177
// begin if Side_Positions [ i ] = 0 then
6065: LD_EXP 34
6069: PUSH
6070: LD_VAR 0 2
6074: ARRAY
6075: PUSH
6076: LD_INT 0
6078: EQUAL
6079: IFFALSE 6097
// enabled_colours = enabled_colours ^ i ;
6081: LD_ADDR_EXP 60
6085: PUSH
6086: LD_EXP 60
6090: PUSH
6091: LD_VAR 0 2
6095: ADD
6096: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
6097: LD_EXP 34
6101: PUSH
6102: LD_VAR 0 2
6106: ARRAY
6107: PUSH
6108: LD_INT 2
6110: EQUAL
6111: IFFALSE 6123
// player1 = i ;
6113: LD_ADDR_EXP 52
6117: PUSH
6118: LD_VAR 0 2
6122: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
6123: LD_EXP 34
6127: PUSH
6128: LD_VAR 0 2
6132: ARRAY
6133: PUSH
6134: LD_INT 3
6136: EQUAL
6137: IFFALSE 6149
// player2 = i ;
6139: LD_ADDR_EXP 53
6143: PUSH
6144: LD_VAR 0 2
6148: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
6149: LD_EXP 34
6153: PUSH
6154: LD_VAR 0 2
6158: ARRAY
6159: PUSH
6160: LD_INT 4
6162: EQUAL
6163: IFFALSE 6175
// player3 = i ;
6165: LD_ADDR_EXP 54
6169: PUSH
6170: LD_VAR 0 2
6174: ST_TO_ADDR
// end ;
6175: GO 6062
6177: POP
6178: POP
// if not Side_Positions [ 6 ] > 0 then
6179: LD_EXP 34
6183: PUSH
6184: LD_INT 6
6186: ARRAY
6187: PUSH
6188: LD_INT 0
6190: GREATER
6191: NOT
6192: IFFALSE 6204
// cpu4 := 5 else
6194: LD_ADDR_EXP 58
6198: PUSH
6199: LD_INT 5
6201: ST_TO_ADDR
6202: GO 6237
// if not Side_Positions [ 7 ] > 0 then
6204: LD_EXP 34
6208: PUSH
6209: LD_INT 7
6211: ARRAY
6212: PUSH
6213: LD_INT 0
6215: GREATER
6216: NOT
6217: IFFALSE 6229
// cpu4 := 3 else
6219: LD_ADDR_EXP 58
6223: PUSH
6224: LD_INT 3
6226: ST_TO_ADDR
6227: GO 6237
// cpu4 := 7 ;
6229: LD_ADDR_EXP 58
6233: PUSH
6234: LD_INT 7
6236: ST_TO_ADDR
// end ; if Russian5AI = 1 then
6237: LD_EXP 24
6241: PUSH
6242: LD_INT 1
6244: EQUAL
6245: IFFALSE 6435
// begin for i = 1 to 8 do
6247: LD_ADDR_VAR 0 2
6251: PUSH
6252: DOUBLE
6253: LD_INT 1
6255: DEC
6256: ST_TO_ADDR
6257: LD_INT 8
6259: PUSH
6260: FOR_TO
6261: IFFALSE 6375
// begin if Side_Positions [ i ] = 0 then
6263: LD_EXP 34
6267: PUSH
6268: LD_VAR 0 2
6272: ARRAY
6273: PUSH
6274: LD_INT 0
6276: EQUAL
6277: IFFALSE 6295
// enabled_colours = enabled_colours ^ i ;
6279: LD_ADDR_EXP 60
6283: PUSH
6284: LD_EXP 60
6288: PUSH
6289: LD_VAR 0 2
6293: ADD
6294: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
6295: LD_EXP 34
6299: PUSH
6300: LD_VAR 0 2
6304: ARRAY
6305: PUSH
6306: LD_INT 2
6308: EQUAL
6309: IFFALSE 6321
// player1 = i ;
6311: LD_ADDR_EXP 52
6315: PUSH
6316: LD_VAR 0 2
6320: ST_TO_ADDR
// if Side_Positions [ i ] = 3 then
6321: LD_EXP 34
6325: PUSH
6326: LD_VAR 0 2
6330: ARRAY
6331: PUSH
6332: LD_INT 3
6334: EQUAL
6335: IFFALSE 6347
// player2 = i ;
6337: LD_ADDR_EXP 53
6341: PUSH
6342: LD_VAR 0 2
6346: ST_TO_ADDR
// if Side_Positions [ i ] = 4 then
6347: LD_EXP 34
6351: PUSH
6352: LD_VAR 0 2
6356: ARRAY
6357: PUSH
6358: LD_INT 4
6360: EQUAL
6361: IFFALSE 6373
// player3 = i ;
6363: LD_ADDR_EXP 54
6367: PUSH
6368: LD_VAR 0 2
6372: ST_TO_ADDR
// end ;
6373: GO 6260
6375: POP
6376: POP
// if not Side_Positions [ 6 ] > 0 then
6377: LD_EXP 34
6381: PUSH
6382: LD_INT 6
6384: ARRAY
6385: PUSH
6386: LD_INT 0
6388: GREATER
6389: NOT
6390: IFFALSE 6402
// cpu5 := 8 else
6392: LD_ADDR_EXP 59
6396: PUSH
6397: LD_INT 8
6399: ST_TO_ADDR
6400: GO 6435
// if not Side_Positions [ 7 ] > 0 then
6402: LD_EXP 34
6406: PUSH
6407: LD_INT 7
6409: ARRAY
6410: PUSH
6411: LD_INT 0
6413: GREATER
6414: NOT
6415: IFFALSE 6427
// cpu5 := 4 else
6417: LD_ADDR_EXP 59
6421: PUSH
6422: LD_INT 4
6424: ST_TO_ADDR
6425: GO 6435
// cpu5 := 1 ;
6427: LD_ADDR_EXP 59
6431: PUSH
6432: LD_INT 1
6434: ST_TO_ADDR
// end ; end ;
6435: LD_VAR 0 1
6439: RET
// export function ResAllTechs ( side , lab ) ; var i , tech , cout ; begin
6440: LD_INT 0
6442: PPUSH
6443: PPUSH
6444: PPUSH
6445: PPUSH
// for i = 1 to 72 do
6446: LD_ADDR_VAR 0 4
6450: PUSH
6451: DOUBLE
6452: LD_INT 1
6454: DEC
6455: ST_TO_ADDR
6456: LD_INT 72
6458: PUSH
6459: FOR_TO
6460: IFFALSE 6498
// begin if GetTech ( i , side ) = state_enabled then
6462: LD_VAR 0 4
6466: PPUSH
6467: LD_VAR 0 1
6471: PPUSH
6472: CALL_OW 321
6476: PUSH
6477: LD_INT 1
6479: EQUAL
6480: IFFALSE 6496
// AddComResearch ( lab , i ) ;
6482: LD_VAR 0 2
6486: PPUSH
6487: LD_VAR 0 4
6491: PPUSH
6492: CALL_OW 184
// end ;
6496: GO 6459
6498: POP
6499: POP
// cout = cout + 1 ;
6500: LD_ADDR_VAR 0 6
6504: PUSH
6505: LD_VAR 0 6
6509: PUSH
6510: LD_INT 1
6512: PLUS
6513: ST_TO_ADDR
// Wait ( 0 0$01 ) ;
6514: LD_INT 35
6516: PPUSH
6517: CALL_OW 67
// end ;
6521: LD_VAR 0 3
6525: RET
// every 0 0$10 trigger Russian1AI = 1 do
6526: LD_EXP 20
6530: PUSH
6531: LD_INT 1
6533: EQUAL
6534: IFFALSE 6567
6536: GO 6538
6538: DISABLE
// begin ResAllTechs ( cpu1 , ru1lab1 ) ;
6539: LD_EXP 55
6543: PPUSH
6544: LD_EXP 62
6548: PPUSH
6549: CALL 6440 0 2
// ResAllTechs ( cpu1 , ru1lab2 ) ;
6553: LD_EXP 55
6557: PPUSH
6558: LD_EXP 63
6562: PPUSH
6563: CALL 6440 0 2
// end ;
6567: END
// every 0 0$10 trigger Russian2AI = 1 do
6568: LD_EXP 21
6572: PUSH
6573: LD_INT 1
6575: EQUAL
6576: IFFALSE 6609
6578: GO 6580
6580: DISABLE
// begin ResAllTechs ( cpu2 , ru2lab1 ) ;
6581: LD_EXP 56
6585: PPUSH
6586: LD_EXP 67
6590: PPUSH
6591: CALL 6440 0 2
// ResAllTechs ( cpu1 , ru2lab2 ) ;
6595: LD_EXP 55
6599: PPUSH
6600: LD_EXP 68
6604: PPUSH
6605: CALL 6440 0 2
// end ;
6609: END
// every 0 0$10 trigger Russian3AI = 1 do
6610: LD_EXP 22
6614: PUSH
6615: LD_INT 1
6617: EQUAL
6618: IFFALSE 6651
6620: GO 6622
6622: DISABLE
// begin ResAllTechs ( cpu3 , ru3lab1 ) ;
6623: LD_EXP 57
6627: PPUSH
6628: LD_EXP 72
6632: PPUSH
6633: CALL 6440 0 2
// ResAllTechs ( cpu3 , ru3lab2 ) ;
6637: LD_EXP 57
6641: PPUSH
6642: LD_EXP 73
6646: PPUSH
6647: CALL 6440 0 2
// end ;
6651: END
// every 0 0$10 trigger Russian4AI = 1 do
6652: LD_EXP 23
6656: PUSH
6657: LD_INT 1
6659: EQUAL
6660: IFFALSE 6693
6662: GO 6664
6664: DISABLE
// begin ResAllTechs ( cpu4 , ru4lab1 ) ;
6665: LD_EXP 58
6669: PPUSH
6670: LD_EXP 77
6674: PPUSH
6675: CALL 6440 0 2
// ResAllTechs ( cpu4 , ru4lab2 ) ;
6679: LD_EXP 58
6683: PPUSH
6684: LD_EXP 78
6688: PPUSH
6689: CALL 6440 0 2
// end ;
6693: END
// every 0 0$1 trigger Russian5AI = 1 do
6694: LD_EXP 24
6698: PUSH
6699: LD_INT 1
6701: EQUAL
6702: IFFALSE 6721
6704: GO 6706
6706: DISABLE
// begin ResAllTechs ( cpu5 , ru5lab1 ) ;
6707: LD_EXP 59
6711: PPUSH
6712: LD_EXP 82
6716: PPUSH
6717: CALL 6440 0 2
// end ; end_of_file
6721: END
// every 0 0$5 trigger Russian1AI = 1 do
6722: LD_EXP 20
6726: PUSH
6727: LD_INT 1
6729: EQUAL
6730: IFFALSE 6739
6732: GO 6734
6734: DISABLE
// begin PlaceRussian1BaseForAI ;
6735: CALL 6812 0 0
// end ;
6739: END
// every 0 0$5 trigger Russian2AI = 1 do
6740: LD_EXP 21
6744: PUSH
6745: LD_INT 1
6747: EQUAL
6748: IFFALSE 6757
6750: GO 6752
6752: DISABLE
// begin PlaceRussian2BaseForAI ;
6753: CALL 7511 0 0
// end ;
6757: END
// every 0 0$5 trigger Russian3AI = 1 do
6758: LD_EXP 22
6762: PUSH
6763: LD_INT 1
6765: EQUAL
6766: IFFALSE 6775
6768: GO 6770
6770: DISABLE
// begin PlaceRussian3BaseForAI ;
6771: CALL 8210 0 0
// end ;
6775: END
// every 0 0$5 trigger Russian4AI = 1 do
6776: LD_EXP 23
6780: PUSH
6781: LD_INT 1
6783: EQUAL
6784: IFFALSE 6793
6786: GO 6788
6788: DISABLE
// begin PlaceRussian4BaseForAI ;
6789: CALL 8935 0 0
// end ;
6793: END
// every 0 0$5 trigger Russian5AI = 1 do
6794: LD_EXP 24
6798: PUSH
6799: LD_INT 1
6801: EQUAL
6802: IFFALSE 6811
6804: GO 6806
6806: DISABLE
// begin PlaceRussian5BaseForAI ;
6807: CALL 9634 0 0
// end ;
6811: END
// export ru1depo , ru1lab1 , ru1lab2 , ru1fab , ru1armoury ; export function PlaceRussian1BaseForAI ; var weapon , RU_Turret , i ; begin
6812: LD_INT 0
6814: PPUSH
6815: PPUSH
6816: PPUSH
6817: PPUSH
// SetTech ( 11 , cpu1 , state_disabled ) ;
6818: LD_INT 11
6820: PPUSH
6821: LD_EXP 55
6825: PPUSH
6826: LD_INT 0
6828: PPUSH
6829: CALL_OW 322
// SetTech ( 2 , cpu1 , state_disabled ) ;
6833: LD_INT 2
6835: PPUSH
6836: LD_EXP 55
6840: PPUSH
6841: LD_INT 0
6843: PPUSH
6844: CALL_OW 322
// bc_level = DifficultyC ;
6848: LD_ADDR_OWVAR 43
6852: PUSH
6853: LD_EXP 25
6857: ST_TO_ADDR
// uc_nation = 3 ;
6858: LD_ADDR_OWVAR 21
6862: PUSH
6863: LD_INT 3
6865: ST_TO_ADDR
// uc_side = cpu1 ;
6866: LD_ADDR_OWVAR 20
6870: PUSH
6871: LD_EXP 55
6875: ST_TO_ADDR
// bc_type = 1 ;
6876: LD_ADDR_OWVAR 42
6880: PUSH
6881: LD_INT 1
6883: ST_TO_ADDR
// ru1depo = CreateAndPlaceBuildingXYD ( 24 , 9 , 3 ) ;
6884: LD_ADDR_EXP 61
6888: PUSH
6889: LD_INT 24
6891: PPUSH
6892: LD_INT 9
6894: PPUSH
6895: LD_INT 3
6897: PPUSH
6898: CALL_OW 47
6902: ST_TO_ADDR
// SetResourceType ( GetBase ( ru1depo ) , mat_cans , 20000 [ mat_cans ] ) ;
6903: LD_EXP 61
6907: PPUSH
6908: CALL_OW 274
6912: PPUSH
6913: LD_INT 1
6915: PPUSH
6916: LD_INT 20000
6918: PUSH
6919: LD_INT 1
6921: ARRAY
6922: PPUSH
6923: CALL_OW 277
// SetResourceType ( GetBase ( ru1depo ) , 2 , 5000 ) ;
6927: LD_EXP 61
6931: PPUSH
6932: CALL_OW 274
6936: PPUSH
6937: LD_INT 2
6939: PPUSH
6940: LD_INT 5000
6942: PPUSH
6943: CALL_OW 277
// SetResourceType ( GetBase ( ru1depo ) , 3 , 5000 ) ;
6947: LD_EXP 61
6951: PPUSH
6952: CALL_OW 274
6956: PPUSH
6957: LD_INT 3
6959: PPUSH
6960: LD_INT 5000
6962: PPUSH
6963: CALL_OW 277
// bc_type = 5 ;
6967: LD_ADDR_OWVAR 42
6971: PUSH
6972: LD_INT 5
6974: ST_TO_ADDR
// ru1armoury = CreateAndPlaceBuildingXYD ( 39 , 26 , 5 ) ;
6975: LD_ADDR_EXP 65
6979: PUSH
6980: LD_INT 39
6982: PPUSH
6983: LD_INT 26
6985: PPUSH
6986: LD_INT 5
6988: PPUSH
6989: CALL_OW 47
6993: ST_TO_ADDR
// bc_type = 32 ;
6994: LD_ADDR_OWVAR 42
6998: PUSH
6999: LD_INT 32
7001: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 45 , 20 , 5 ) ;
7002: LD_INT 45
7004: PPUSH
7005: LD_INT 20
7007: PPUSH
7008: LD_INT 5
7010: PPUSH
7011: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 44 , 25 , 5 ) ;
7015: LD_INT 44
7017: PPUSH
7018: LD_INT 25
7020: PPUSH
7021: LD_INT 5
7023: PPUSH
7024: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 26 , 40 , 5 ) ;
7028: LD_INT 26
7030: PPUSH
7031: LD_INT 40
7033: PPUSH
7034: LD_INT 5
7036: PPUSH
7037: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 37 , 39 , 5 ) ;
7041: LD_INT 37
7043: PPUSH
7044: LD_INT 39
7046: PPUSH
7047: LD_INT 5
7049: PPUSH
7050: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 42 , 21 , 5 ) ;
7054: LD_INT 42
7056: PPUSH
7057: LD_INT 21
7059: PPUSH
7060: LD_INT 5
7062: PPUSH
7063: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 38 , 36 , 5 ) ;
7067: LD_INT 38
7069: PPUSH
7070: LD_INT 36
7072: PPUSH
7073: LD_INT 5
7075: PPUSH
7076: CALL_OW 47
// bc_type = b_lab ;
7080: LD_ADDR_OWVAR 42
7084: PUSH
7085: LD_INT 6
7087: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
7088: LD_ADDR_OWVAR 44
7092: PUSH
7093: LD_INT 10
7095: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
7096: LD_ADDR_OWVAR 45
7100: PUSH
7101: LD_INT 11
7103: ST_TO_ADDR
// ru1lab1 = CreateAndPlaceBuildingXYD ( 10 , 7 , 2 ) ;
7104: LD_ADDR_EXP 62
7108: PUSH
7109: LD_INT 10
7111: PPUSH
7112: LD_INT 7
7114: PPUSH
7115: LD_INT 2
7117: PPUSH
7118: CALL_OW 47
7122: ST_TO_ADDR
// bc_type = b_lab ;
7123: LD_ADDR_OWVAR 42
7127: PUSH
7128: LD_INT 6
7130: ST_TO_ADDR
// bc_kind1 = b_lab_spacetime ;
7131: LD_ADDR_OWVAR 44
7135: PUSH
7136: LD_INT 14
7138: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
7139: LD_ADDR_OWVAR 45
7143: PUSH
7144: LD_INT 12
7146: ST_TO_ADDR
// ru1lab2 = CreateAndPlaceBuildingXYD ( 34 , 10 , 3 ) ;
7147: LD_ADDR_EXP 63
7151: PUSH
7152: LD_INT 34
7154: PPUSH
7155: LD_INT 10
7157: PPUSH
7158: LD_INT 3
7160: PPUSH
7161: CALL_OW 47
7165: ST_TO_ADDR
// bc_type = 3 ;
7166: LD_ADDR_OWVAR 42
7170: PUSH
7171: LD_INT 3
7173: ST_TO_ADDR
// ru1fab = CreateAndPlaceBuildingXYD ( 20 , 21 , 2 ) ;
7174: LD_ADDR_EXP 64
7178: PUSH
7179: LD_INT 20
7181: PPUSH
7182: LD_INT 21
7184: PPUSH
7185: LD_INT 2
7187: PPUSH
7188: CALL_OW 47
7192: ST_TO_ADDR
// bc_type = 17 ;
7193: LD_ADDR_OWVAR 42
7197: PUSH
7198: LD_INT 17
7200: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 24 , 21 , 4 ) ;
7201: LD_INT 24
7203: PPUSH
7204: LD_INT 21
7206: PPUSH
7207: LD_INT 4
7209: PPUSH
7210: CALL_OW 47
// bc_type = 18 ;
7214: LD_ADDR_OWVAR 42
7218: PUSH
7219: LD_INT 18
7221: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 20 , 18 , 3 ) ;
7222: LD_INT 20
7224: PPUSH
7225: LD_INT 18
7227: PPUSH
7228: LD_INT 3
7230: PPUSH
7231: CALL_OW 47
// bc_type = 21 ;
7235: LD_ADDR_OWVAR 42
7239: PUSH
7240: LD_INT 21
7242: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 20 , 25 , 0 ) ;
7243: LD_INT 20
7245: PPUSH
7246: LD_INT 25
7248: PPUSH
7249: LD_INT 0
7251: PPUSH
7252: CALL_OW 47
// bc_type = 24 ;
7256: LD_ADDR_OWVAR 42
7260: PUSH
7261: LD_INT 24
7263: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 17 , 21 , 1 ) ;
7264: LD_INT 17
7266: PPUSH
7267: LD_INT 21
7269: PPUSH
7270: LD_INT 1
7272: PPUSH
7273: CALL_OW 47
// bc_type = 16 ;
7277: LD_ADDR_OWVAR 42
7281: PUSH
7282: LD_INT 16
7284: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 16 , 17 , 2 ) ;
7285: LD_INT 16
7287: PPUSH
7288: LD_INT 17
7290: PPUSH
7291: LD_INT 2
7293: PPUSH
7294: CALL_OW 47
// bc_type = 28 ;
7298: LD_ADDR_OWVAR 42
7302: PUSH
7303: LD_INT 28
7305: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 9 , 11 , 2 ) ;
7306: LD_INT 9
7308: PPUSH
7309: LD_INT 11
7311: PPUSH
7312: LD_INT 2
7314: PPUSH
7315: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 15 , 5 , 2 ) ;
7319: LD_INT 15
7321: PPUSH
7322: LD_INT 5
7324: PPUSH
7325: LD_INT 2
7327: PPUSH
7328: CALL_OW 47
// SetResourceVisibility ( 14 , 23 , cpu1 ) ;
7332: LD_INT 14
7334: PPUSH
7335: LD_INT 23
7337: PPUSH
7338: LD_EXP 55
7342: PPUSH
7343: CALL_OW 441
// bc_type = 29 ;
7347: LD_ADDR_OWVAR 42
7351: PUSH
7352: LD_INT 29
7354: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 14 , 23 , 2 ) ;
7355: LD_INT 14
7357: PPUSH
7358: LD_INT 23
7360: PPUSH
7361: LD_INT 2
7363: PPUSH
7364: CALL_OW 47
// SetResourceVisibility ( 20 , 34 , cpu1 ) ;
7368: LD_INT 20
7370: PPUSH
7371: LD_INT 34
7373: PPUSH
7374: LD_EXP 55
7378: PPUSH
7379: CALL_OW 441
// bc_type = 30 ;
7383: LD_ADDR_OWVAR 42
7387: PUSH
7388: LD_INT 30
7390: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 20 , 34 , 3 ) ;
7391: LD_INT 20
7393: PPUSH
7394: LD_INT 34
7396: PPUSH
7397: LD_INT 3
7399: PPUSH
7400: CALL_OW 47
// weapon = [ 46 , 45 , 47 , 44 ] ;
7404: LD_ADDR_VAR 0 2
7408: PUSH
7409: LD_INT 46
7411: PUSH
7412: LD_INT 45
7414: PUSH
7415: LD_INT 47
7417: PUSH
7418: LD_INT 44
7420: PUSH
7421: EMPTY
7422: LIST
7423: LIST
7424: LIST
7425: LIST
7426: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
7427: LD_ADDR_VAR 0 3
7431: PUSH
7432: LD_INT 22
7434: PUSH
7435: LD_EXP 55
7439: PUSH
7440: EMPTY
7441: LIST
7442: LIST
7443: PUSH
7444: LD_INT 30
7446: PUSH
7447: LD_INT 32
7449: PUSH
7450: EMPTY
7451: LIST
7452: LIST
7453: PUSH
7454: EMPTY
7455: LIST
7456: LIST
7457: PPUSH
7458: CALL_OW 69
7462: ST_TO_ADDR
// for i in RU_turret do
7463: LD_ADDR_VAR 0 4
7467: PUSH
7468: LD_VAR 0 3
7472: PUSH
7473: FOR_IN
7474: IFFALSE 7504
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 4 ) ] ) ;
7476: LD_VAR 0 4
7480: PPUSH
7481: LD_VAR 0 2
7485: PUSH
7486: LD_INT 1
7488: PPUSH
7489: LD_INT 4
7491: PPUSH
7492: CALL_OW 12
7496: ARRAY
7497: PPUSH
7498: CALL_OW 431
// end ;
7502: GO 7473
7504: POP
7505: POP
// end ;
7506: LD_VAR 0 1
7510: RET
// export ru2depo , ru2lab1 , ru2lab2 , ru2fab , ru2armoury ; export function PlaceRussian2BaseForAI ; var weapon , RU_Turret , i ; begin
7511: LD_INT 0
7513: PPUSH
7514: PPUSH
7515: PPUSH
7516: PPUSH
// SetTech ( 11 , cpu2 , state_disabled ) ;
7517: LD_INT 11
7519: PPUSH
7520: LD_EXP 56
7524: PPUSH
7525: LD_INT 0
7527: PPUSH
7528: CALL_OW 322
// SetTech ( 2 , cpu2 , state_disabled ) ;
7532: LD_INT 2
7534: PPUSH
7535: LD_EXP 56
7539: PPUSH
7540: LD_INT 0
7542: PPUSH
7543: CALL_OW 322
// bc_level = DifficultyC ;
7547: LD_ADDR_OWVAR 43
7551: PUSH
7552: LD_EXP 25
7556: ST_TO_ADDR
// uc_nation = 3 ;
7557: LD_ADDR_OWVAR 21
7561: PUSH
7562: LD_INT 3
7564: ST_TO_ADDR
// uc_side = cpu2 ;
7565: LD_ADDR_OWVAR 20
7569: PUSH
7570: LD_EXP 56
7574: ST_TO_ADDR
// bc_type = 1 ;
7575: LD_ADDR_OWVAR 42
7579: PUSH
7580: LD_INT 1
7582: ST_TO_ADDR
// ru2depo = CreateAndPlaceBuildingXYD ( 86 , 6 , 3 ) ;
7583: LD_ADDR_EXP 66
7587: PUSH
7588: LD_INT 86
7590: PPUSH
7591: LD_INT 6
7593: PPUSH
7594: LD_INT 3
7596: PPUSH
7597: CALL_OW 47
7601: ST_TO_ADDR
// SetResourceType ( GetBase ( ru2depo ) , mat_cans , 20000 [ mat_cans ] ) ;
7602: LD_EXP 66
7606: PPUSH
7607: CALL_OW 274
7611: PPUSH
7612: LD_INT 1
7614: PPUSH
7615: LD_INT 20000
7617: PUSH
7618: LD_INT 1
7620: ARRAY
7621: PPUSH
7622: CALL_OW 277
// SetResourceType ( GetBase ( ru2depo ) , 2 , 5000 ) ;
7626: LD_EXP 66
7630: PPUSH
7631: CALL_OW 274
7635: PPUSH
7636: LD_INT 2
7638: PPUSH
7639: LD_INT 5000
7641: PPUSH
7642: CALL_OW 277
// SetResourceType ( GetBase ( ru2depo ) , 3 , 5000 ) ;
7646: LD_EXP 66
7650: PPUSH
7651: CALL_OW 274
7655: PPUSH
7656: LD_INT 3
7658: PPUSH
7659: LD_INT 5000
7661: PPUSH
7662: CALL_OW 277
// bc_type = 5 ;
7666: LD_ADDR_OWVAR 42
7670: PUSH
7671: LD_INT 5
7673: ST_TO_ADDR
// ru2armoury = CreateAndPlaceBuildingXYD ( 80 , 13 , 0 ) ;
7674: LD_ADDR_EXP 70
7678: PUSH
7679: LD_INT 80
7681: PPUSH
7682: LD_INT 13
7684: PPUSH
7685: LD_INT 0
7687: PPUSH
7688: CALL_OW 47
7692: ST_TO_ADDR
// bc_type = 32 ;
7693: LD_ADDR_OWVAR 42
7697: PUSH
7698: LD_INT 32
7700: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 105 , 35 , 0 ) ;
7701: LD_INT 105
7703: PPUSH
7704: LD_INT 35
7706: PPUSH
7707: LD_INT 0
7709: PPUSH
7710: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 111 , 22 , 0 ) ;
7714: LD_INT 111
7716: PPUSH
7717: LD_INT 22
7719: PPUSH
7720: LD_INT 0
7722: PPUSH
7723: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 115 , 27 , 0 ) ;
7727: LD_INT 115
7729: PPUSH
7730: LD_INT 27
7732: PPUSH
7733: LD_INT 0
7735: PPUSH
7736: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 68 , 3 , 0 ) ;
7740: LD_INT 68
7742: PPUSH
7743: LD_INT 3
7745: PPUSH
7746: LD_INT 0
7748: PPUSH
7749: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 71 , 4 , 0 ) ;
7753: LD_INT 71
7755: PPUSH
7756: LD_INT 4
7758: PPUSH
7759: LD_INT 0
7761: PPUSH
7762: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 108 , 35 , 0 ) ;
7766: LD_INT 108
7768: PPUSH
7769: LD_INT 35
7771: PPUSH
7772: LD_INT 0
7774: PPUSH
7775: CALL_OW 47
// bc_type = b_lab ;
7779: LD_ADDR_OWVAR 42
7783: PUSH
7784: LD_INT 6
7786: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
7787: LD_ADDR_OWVAR 44
7791: PUSH
7792: LD_INT 10
7794: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
7795: LD_ADDR_OWVAR 45
7799: PUSH
7800: LD_INT 11
7802: ST_TO_ADDR
// ru2lab1 = CreateAndPlaceBuildingXYD ( 100 , 17 , 4 ) ;
7803: LD_ADDR_EXP 67
7807: PUSH
7808: LD_INT 100
7810: PPUSH
7811: LD_INT 17
7813: PPUSH
7814: LD_INT 4
7816: PPUSH
7817: CALL_OW 47
7821: ST_TO_ADDR
// bc_type = b_lab ;
7822: LD_ADDR_OWVAR 42
7826: PUSH
7827: LD_INT 6
7829: ST_TO_ADDR
// bc_kind1 = b_lab_spacetime ;
7830: LD_ADDR_OWVAR 44
7834: PUSH
7835: LD_INT 14
7837: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
7838: LD_ADDR_OWVAR 45
7842: PUSH
7843: LD_INT 12
7845: ST_TO_ADDR
// ru2lab2 = CreateAndPlaceBuildingXYD ( 94 , 6 , 3 ) ;
7846: LD_ADDR_EXP 68
7850: PUSH
7851: LD_INT 94
7853: PPUSH
7854: LD_INT 6
7856: PPUSH
7857: LD_INT 3
7859: PPUSH
7860: CALL_OW 47
7864: ST_TO_ADDR
// bc_type = 3 ;
7865: LD_ADDR_OWVAR 42
7869: PUSH
7870: LD_INT 3
7872: ST_TO_ADDR
// ru2fab = CreateAndPlaceBuildingXYD ( 98 , 26 , 5 ) ;
7873: LD_ADDR_EXP 69
7877: PUSH
7878: LD_INT 98
7880: PPUSH
7881: LD_INT 26
7883: PPUSH
7884: LD_INT 5
7886: PPUSH
7887: CALL_OW 47
7891: ST_TO_ADDR
// bc_type = 17 ;
7892: LD_ADDR_OWVAR 42
7896: PUSH
7897: LD_INT 17
7899: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 98 , 22 , 3 ) ;
7900: LD_INT 98
7902: PPUSH
7903: LD_INT 22
7905: PPUSH
7906: LD_INT 3
7908: PPUSH
7909: CALL_OW 47
// bc_type = 18 ;
7913: LD_ADDR_OWVAR 42
7917: PUSH
7918: LD_INT 18
7920: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 98 , 29 , 0 ) ;
7921: LD_INT 98
7923: PPUSH
7924: LD_INT 29
7926: PPUSH
7927: LD_INT 0
7929: PPUSH
7930: CALL_OW 47
// bc_type = 21 ;
7934: LD_ADDR_OWVAR 42
7938: PUSH
7939: LD_INT 21
7941: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 94 , 26 , 1 ) ;
7942: LD_INT 94
7944: PPUSH
7945: LD_INT 26
7947: PPUSH
7948: LD_INT 1
7950: PPUSH
7951: CALL_OW 47
// bc_type = 24 ;
7955: LD_ADDR_OWVAR 42
7959: PUSH
7960: LD_INT 24
7962: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 102 , 30 , 5 ) ;
7963: LD_INT 102
7965: PPUSH
7966: LD_INT 30
7968: PPUSH
7969: LD_INT 5
7971: PPUSH
7972: CALL_OW 47
// bc_type = 16 ;
7976: LD_ADDR_OWVAR 42
7980: PUSH
7981: LD_INT 16
7983: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 101 , 26 , 4 ) ;
7984: LD_INT 101
7986: PPUSH
7987: LD_INT 26
7989: PPUSH
7990: LD_INT 4
7992: PPUSH
7993: CALL_OW 47
// bc_type = 28 ;
7997: LD_ADDR_OWVAR 42
8001: PUSH
8002: LD_INT 28
8004: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 97 , 3 , 1 ) ;
8005: LD_INT 97
8007: PPUSH
8008: LD_INT 3
8010: PPUSH
8011: LD_INT 1
8013: PPUSH
8014: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 101 , 4 , 5 ) ;
8018: LD_INT 101
8020: PPUSH
8021: LD_INT 4
8023: PPUSH
8024: LD_INT 5
8026: PPUSH
8027: CALL_OW 47
// SetResourceVisibility ( 77 , 3 , cpu2 ) ;
8031: LD_INT 77
8033: PPUSH
8034: LD_INT 3
8036: PPUSH
8037: LD_EXP 56
8041: PPUSH
8042: CALL_OW 441
// bc_type = 29 ;
8046: LD_ADDR_OWVAR 42
8050: PUSH
8051: LD_INT 29
8053: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 77 , 3 , 2 ) ;
8054: LD_INT 77
8056: PPUSH
8057: LD_INT 3
8059: PPUSH
8060: LD_INT 2
8062: PPUSH
8063: CALL_OW 47
// SetResourceVisibility ( 102 , 9 , cpu2 ) ;
8067: LD_INT 102
8069: PPUSH
8070: LD_INT 9
8072: PPUSH
8073: LD_EXP 56
8077: PPUSH
8078: CALL_OW 441
// bc_type = 30 ;
8082: LD_ADDR_OWVAR 42
8086: PUSH
8087: LD_INT 30
8089: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 102 , 9 , 3 ) ;
8090: LD_INT 102
8092: PPUSH
8093: LD_INT 9
8095: PPUSH
8096: LD_INT 3
8098: PPUSH
8099: CALL_OW 47
// weapon = [ 46 , 45 , 47 , 44 ] ;
8103: LD_ADDR_VAR 0 2
8107: PUSH
8108: LD_INT 46
8110: PUSH
8111: LD_INT 45
8113: PUSH
8114: LD_INT 47
8116: PUSH
8117: LD_INT 44
8119: PUSH
8120: EMPTY
8121: LIST
8122: LIST
8123: LIST
8124: LIST
8125: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_btype , b_bunker ] ] ) ;
8126: LD_ADDR_VAR 0 3
8130: PUSH
8131: LD_INT 22
8133: PUSH
8134: LD_EXP 56
8138: PUSH
8139: EMPTY
8140: LIST
8141: LIST
8142: PUSH
8143: LD_INT 30
8145: PUSH
8146: LD_INT 32
8148: PUSH
8149: EMPTY
8150: LIST
8151: LIST
8152: PUSH
8153: EMPTY
8154: LIST
8155: LIST
8156: PPUSH
8157: CALL_OW 69
8161: ST_TO_ADDR
// for i in RU_turret do
8162: LD_ADDR_VAR 0 4
8166: PUSH
8167: LD_VAR 0 3
8171: PUSH
8172: FOR_IN
8173: IFFALSE 8203
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 4 ) ] ) ;
8175: LD_VAR 0 4
8179: PPUSH
8180: LD_VAR 0 2
8184: PUSH
8185: LD_INT 1
8187: PPUSH
8188: LD_INT 4
8190: PPUSH
8191: CALL_OW 12
8195: ARRAY
8196: PPUSH
8197: CALL_OW 431
// end ;
8201: GO 8172
8203: POP
8204: POP
// end ;
8205: LD_VAR 0 1
8209: RET
// export ru3depo , ru3lab1 , ru3lab2 , ru3fab , ru3armoury ; export function PlaceRussian3BaseForAI ; var weapon , RU_Turret , i ; begin
8210: LD_INT 0
8212: PPUSH
8213: PPUSH
8214: PPUSH
8215: PPUSH
// SetTech ( 11 , cpu3 , state_disabled ) ;
8216: LD_INT 11
8218: PPUSH
8219: LD_EXP 57
8223: PPUSH
8224: LD_INT 0
8226: PPUSH
8227: CALL_OW 322
// SetTech ( 2 , cpu3 , state_disabled ) ;
8231: LD_INT 2
8233: PPUSH
8234: LD_EXP 57
8238: PPUSH
8239: LD_INT 0
8241: PPUSH
8242: CALL_OW 322
// bc_level = DifficultyC ;
8246: LD_ADDR_OWVAR 43
8250: PUSH
8251: LD_EXP 25
8255: ST_TO_ADDR
// uc_nation = 3 ;
8256: LD_ADDR_OWVAR 21
8260: PUSH
8261: LD_INT 3
8263: ST_TO_ADDR
// uc_side = cpu3 ;
8264: LD_ADDR_OWVAR 20
8268: PUSH
8269: LD_EXP 57
8273: ST_TO_ADDR
// bc_type = 1 ;
8274: LD_ADDR_OWVAR 42
8278: PUSH
8279: LD_INT 1
8281: ST_TO_ADDR
// ru3depo = CreateAndPlaceBuildingXYD ( 184 , 73 , 3 ) ;
8282: LD_ADDR_EXP 71
8286: PUSH
8287: LD_INT 184
8289: PPUSH
8290: LD_INT 73
8292: PPUSH
8293: LD_INT 3
8295: PPUSH
8296: CALL_OW 47
8300: ST_TO_ADDR
// SetResourceType ( GetBase ( ru3depo ) , mat_cans , 20000 [ mat_cans ] ) ;
8301: LD_EXP 71
8305: PPUSH
8306: CALL_OW 274
8310: PPUSH
8311: LD_INT 1
8313: PPUSH
8314: LD_INT 20000
8316: PUSH
8317: LD_INT 1
8319: ARRAY
8320: PPUSH
8321: CALL_OW 277
// SetResourceType ( GetBase ( ru3depo ) , 2 , 5000 ) ;
8325: LD_EXP 71
8329: PPUSH
8330: CALL_OW 274
8334: PPUSH
8335: LD_INT 2
8337: PPUSH
8338: LD_INT 5000
8340: PPUSH
8341: CALL_OW 277
// SetResourceType ( GetBase ( ru3depo ) , 3 , 5000 ) ;
8345: LD_EXP 71
8349: PPUSH
8350: CALL_OW 274
8354: PPUSH
8355: LD_INT 3
8357: PPUSH
8358: LD_INT 5000
8360: PPUSH
8361: CALL_OW 277
// bc_type = 5 ;
8365: LD_ADDR_OWVAR 42
8369: PUSH
8370: LD_INT 5
8372: ST_TO_ADDR
// ru3armoury = CreateAndPlaceBuildingXYD ( 188 , 94 , 5 ) ;
8373: LD_ADDR_EXP 75
8377: PUSH
8378: LD_INT 188
8380: PPUSH
8381: LD_INT 94
8383: PPUSH
8384: LD_INT 5
8386: PPUSH
8387: CALL_OW 47
8391: ST_TO_ADDR
// bc_type = 32 ;
8392: LD_ADDR_OWVAR 42
8396: PUSH
8397: LD_INT 32
8399: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 171 , 92 , 3 ) ;
8400: LD_INT 171
8402: PPUSH
8403: LD_INT 92
8405: PPUSH
8406: LD_INT 3
8408: PPUSH
8409: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 177 , 98 , 3 ) ;
8413: LD_INT 177
8415: PPUSH
8416: LD_INT 98
8418: PPUSH
8419: LD_INT 3
8421: PPUSH
8422: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 169 , 69 , 3 ) ;
8426: LD_INT 169
8428: PPUSH
8429: LD_INT 69
8431: PPUSH
8432: LD_INT 3
8434: PPUSH
8435: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 170 , 66 , 3 ) ;
8439: LD_INT 170
8441: PPUSH
8442: LD_INT 66
8444: PPUSH
8445: LD_INT 3
8447: PPUSH
8448: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 184 , 62 , 3 ) ;
8452: LD_INT 184
8454: PPUSH
8455: LD_INT 62
8457: PPUSH
8458: LD_INT 3
8460: PPUSH
8461: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 195 , 103 , 0 ) ;
8465: LD_INT 195
8467: PPUSH
8468: LD_INT 103
8470: PPUSH
8471: LD_INT 0
8473: PPUSH
8474: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 200 , 103 , 0 ) ;
8478: LD_INT 200
8480: PPUSH
8481: LD_INT 103
8483: PPUSH
8484: LD_INT 0
8486: PPUSH
8487: CALL_OW 47
// bc_type = b_lab ;
8491: LD_ADDR_OWVAR 42
8495: PUSH
8496: LD_INT 6
8498: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
8499: LD_ADDR_OWVAR 44
8503: PUSH
8504: LD_INT 10
8506: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
8507: LD_ADDR_OWVAR 45
8511: PUSH
8512: LD_INT 11
8514: ST_TO_ADDR
// ru3lab1 = CreateAndPlaceBuildingXYD ( 176 , 92 , 0 ) ;
8515: LD_ADDR_EXP 72
8519: PUSH
8520: LD_INT 176
8522: PPUSH
8523: LD_INT 92
8525: PPUSH
8526: LD_INT 0
8528: PPUSH
8529: CALL_OW 47
8533: ST_TO_ADDR
// bc_type = b_lab ;
8534: LD_ADDR_OWVAR 42
8538: PUSH
8539: LD_INT 6
8541: ST_TO_ADDR
// bc_kind1 = b_lab_spacetime ;
8542: LD_ADDR_OWVAR 44
8546: PUSH
8547: LD_INT 14
8549: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
8550: LD_ADDR_OWVAR 45
8554: PUSH
8555: LD_INT 12
8557: ST_TO_ADDR
// ru3lab2 = CreateAndPlaceBuildingXYD ( 176 , 82 , 3 ) ;
8558: LD_ADDR_EXP 73
8562: PUSH
8563: LD_INT 176
8565: PPUSH
8566: LD_INT 82
8568: PPUSH
8569: LD_INT 3
8571: PPUSH
8572: CALL_OW 47
8576: ST_TO_ADDR
// bc_type = 3 ;
8577: LD_ADDR_OWVAR 42
8581: PUSH
8582: LD_INT 3
8584: ST_TO_ADDR
// ru3fab = CreateAndPlaceBuildingXYD ( 190 , 84 , 4 ) ;
8585: LD_ADDR_EXP 74
8589: PUSH
8590: LD_INT 190
8592: PPUSH
8593: LD_INT 84
8595: PPUSH
8596: LD_INT 4
8598: PPUSH
8599: CALL_OW 47
8603: ST_TO_ADDR
// bc_type = 17 ;
8604: LD_ADDR_OWVAR 42
8608: PUSH
8609: LD_INT 17
8611: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 190 , 88 , 0 ) ;
8612: LD_INT 190
8614: PPUSH
8615: LD_INT 88
8617: PPUSH
8618: LD_INT 0
8620: PPUSH
8621: CALL_OW 47
// bc_type = 16 ;
8625: LD_ADDR_OWVAR 42
8629: PUSH
8630: LD_INT 16
8632: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 186 , 80 , 2 ) ;
8633: LD_INT 186
8635: PPUSH
8636: LD_INT 80
8638: PPUSH
8639: LD_INT 2
8641: PPUSH
8642: CALL_OW 47
// bc_type = 18 ;
8646: LD_ADDR_OWVAR 42
8650: PUSH
8651: LD_INT 18
8653: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 193 , 87 , 5 ) ;
8654: LD_INT 193
8656: PPUSH
8657: LD_INT 87
8659: PPUSH
8660: LD_INT 5
8662: PPUSH
8663: CALL_OW 47
// bc_type = 24 ;
8667: LD_ADDR_OWVAR 42
8671: PUSH
8672: LD_INT 24
8674: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 190 , 81 , 3 ) ;
8675: LD_INT 190
8677: PPUSH
8678: LD_INT 81
8680: PPUSH
8681: LD_INT 3
8683: PPUSH
8684: CALL_OW 47
// bc_type = 21 ;
8688: LD_ADDR_OWVAR 42
8692: PUSH
8693: LD_INT 21
8695: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 194 , 84 , 4 ) ;
8696: LD_INT 194
8698: PPUSH
8699: LD_INT 84
8701: PPUSH
8702: LD_INT 4
8704: PPUSH
8705: CALL_OW 47
// bc_type = 28 ;
8709: LD_ADDR_OWVAR 42
8713: PUSH
8714: LD_INT 28
8716: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 198 , 90 , 3 ) ;
8717: LD_INT 198
8719: PPUSH
8720: LD_INT 90
8722: PPUSH
8723: LD_INT 3
8725: PPUSH
8726: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 196 , 92 , 5 ) ;
8730: LD_INT 196
8732: PPUSH
8733: LD_INT 92
8735: PPUSH
8736: LD_INT 5
8738: PPUSH
8739: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 198 , 86 , 1 ) ;
8743: LD_INT 198
8745: PPUSH
8746: LD_INT 86
8748: PPUSH
8749: LD_INT 1
8751: PPUSH
8752: CALL_OW 47
// SetResourceVisibility ( 180 , 71 , cpu3 ) ;
8756: LD_INT 180
8758: PPUSH
8759: LD_INT 71
8761: PPUSH
8762: LD_EXP 57
8766: PPUSH
8767: CALL_OW 441
// bc_type = 29 ;
8771: LD_ADDR_OWVAR 42
8775: PUSH
8776: LD_INT 29
8778: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 180 , 71 , 2 ) ;
8779: LD_INT 180
8781: PPUSH
8782: LD_INT 71
8784: PPUSH
8785: LD_INT 2
8787: PPUSH
8788: CALL_OW 47
// SetResourceVisibility ( 192 , 93 , cpu3 ) ;
8792: LD_INT 192
8794: PPUSH
8795: LD_INT 93
8797: PPUSH
8798: LD_EXP 57
8802: PPUSH
8803: CALL_OW 441
// bc_type = 30 ;
8807: LD_ADDR_OWVAR 42
8811: PUSH
8812: LD_INT 30
8814: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 192 , 93 , 3 ) ;
8815: LD_INT 192
8817: PPUSH
8818: LD_INT 93
8820: PPUSH
8821: LD_INT 3
8823: PPUSH
8824: CALL_OW 47
// weapon = [ 46 , 45 , 47 , 44 ] ;
8828: LD_ADDR_VAR 0 2
8832: PUSH
8833: LD_INT 46
8835: PUSH
8836: LD_INT 45
8838: PUSH
8839: LD_INT 47
8841: PUSH
8842: LD_INT 44
8844: PUSH
8845: EMPTY
8846: LIST
8847: LIST
8848: LIST
8849: LIST
8850: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_btype , b_bunker ] ] ) ;
8851: LD_ADDR_VAR 0 3
8855: PUSH
8856: LD_INT 22
8858: PUSH
8859: LD_EXP 57
8863: PUSH
8864: EMPTY
8865: LIST
8866: LIST
8867: PUSH
8868: LD_INT 30
8870: PUSH
8871: LD_INT 32
8873: PUSH
8874: EMPTY
8875: LIST
8876: LIST
8877: PUSH
8878: EMPTY
8879: LIST
8880: LIST
8881: PPUSH
8882: CALL_OW 69
8886: ST_TO_ADDR
// for i in RU_turret do
8887: LD_ADDR_VAR 0 4
8891: PUSH
8892: LD_VAR 0 3
8896: PUSH
8897: FOR_IN
8898: IFFALSE 8928
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 4 ) ] ) ;
8900: LD_VAR 0 4
8904: PPUSH
8905: LD_VAR 0 2
8909: PUSH
8910: LD_INT 1
8912: PPUSH
8913: LD_INT 4
8915: PPUSH
8916: CALL_OW 12
8920: ARRAY
8921: PPUSH
8922: CALL_OW 431
// end ;
8926: GO 8897
8928: POP
8929: POP
// end ;
8930: LD_VAR 0 1
8934: RET
// export ru4depo , ru4lab1 , ru4lab2 , ru4fab , ru4armoury ; export function PlaceRussian4BaseForAI ; var weapon , RU_Turret , i ; begin
8935: LD_INT 0
8937: PPUSH
8938: PPUSH
8939: PPUSH
8940: PPUSH
// SetTech ( 11 , cpu4 , state_disabled ) ;
8941: LD_INT 11
8943: PPUSH
8944: LD_EXP 58
8948: PPUSH
8949: LD_INT 0
8951: PPUSH
8952: CALL_OW 322
// SetTech ( 2 , cpu4 , state_disabled ) ;
8956: LD_INT 2
8958: PPUSH
8959: LD_EXP 58
8963: PPUSH
8964: LD_INT 0
8966: PPUSH
8967: CALL_OW 322
// bc_level = DifficultyC ;
8971: LD_ADDR_OWVAR 43
8975: PUSH
8976: LD_EXP 25
8980: ST_TO_ADDR
// uc_nation = 3 ;
8981: LD_ADDR_OWVAR 21
8985: PUSH
8986: LD_INT 3
8988: ST_TO_ADDR
// uc_side = cpu4 ;
8989: LD_ADDR_OWVAR 20
8993: PUSH
8994: LD_EXP 58
8998: ST_TO_ADDR
// bc_type = 1 ;
8999: LD_ADDR_OWVAR 42
9003: PUSH
9004: LD_INT 1
9006: ST_TO_ADDR
// ru4depo = CreateAndPlaceBuildingXYD ( 217 , 129 , 3 ) ;
9007: LD_ADDR_EXP 76
9011: PUSH
9012: LD_INT 217
9014: PPUSH
9015: LD_INT 129
9017: PPUSH
9018: LD_INT 3
9020: PPUSH
9021: CALL_OW 47
9025: ST_TO_ADDR
// SetResourceType ( GetBase ( ru4depo ) , mat_cans , 20000 [ mat_cans ] ) ;
9026: LD_EXP 76
9030: PPUSH
9031: CALL_OW 274
9035: PPUSH
9036: LD_INT 1
9038: PPUSH
9039: LD_INT 20000
9041: PUSH
9042: LD_INT 1
9044: ARRAY
9045: PPUSH
9046: CALL_OW 277
// SetResourceType ( GetBase ( ru4depo ) , 2 , 5000 ) ;
9050: LD_EXP 76
9054: PPUSH
9055: CALL_OW 274
9059: PPUSH
9060: LD_INT 2
9062: PPUSH
9063: LD_INT 5000
9065: PPUSH
9066: CALL_OW 277
// SetResourceType ( GetBase ( ru4depo ) , 3 , 5000 ) ;
9070: LD_EXP 76
9074: PPUSH
9075: CALL_OW 274
9079: PPUSH
9080: LD_INT 3
9082: PPUSH
9083: LD_INT 5000
9085: PPUSH
9086: CALL_OW 277
// bc_type = 5 ;
9090: LD_ADDR_OWVAR 42
9094: PUSH
9095: LD_INT 5
9097: ST_TO_ADDR
// ru4armoury = CreateAndPlaceBuildingXYD ( 210 , 128 , 2 ) ;
9098: LD_ADDR_EXP 80
9102: PUSH
9103: LD_INT 210
9105: PPUSH
9106: LD_INT 128
9108: PPUSH
9109: LD_INT 2
9111: PPUSH
9112: CALL_OW 47
9116: ST_TO_ADDR
// bc_type = 32 ;
9117: LD_ADDR_OWVAR 42
9121: PUSH
9122: LD_INT 32
9124: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 200 , 142 , 2 ) ;
9125: LD_INT 200
9127: PPUSH
9128: LD_INT 142
9130: PPUSH
9131: LD_INT 2
9133: PPUSH
9134: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 201 , 127 , 2 ) ;
9138: LD_INT 201
9140: PPUSH
9141: LD_INT 127
9143: PPUSH
9144: LD_INT 2
9146: PPUSH
9147: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 199 , 138 , 2 ) ;
9151: LD_INT 199
9153: PPUSH
9154: LD_INT 138
9156: PPUSH
9157: LD_INT 2
9159: PPUSH
9160: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 202 , 124 , 2 ) ;
9164: LD_INT 202
9166: PPUSH
9167: LD_INT 124
9169: PPUSH
9170: LD_INT 2
9172: PPUSH
9173: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 218 , 123 , 2 ) ;
9177: LD_INT 218
9179: PPUSH
9180: LD_INT 123
9182: PPUSH
9183: LD_INT 2
9185: PPUSH
9186: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 204 , 145 , 2 ) ;
9190: LD_INT 204
9192: PPUSH
9193: LD_INT 145
9195: PPUSH
9196: LD_INT 2
9198: PPUSH
9199: CALL_OW 47
// bc_type = b_lab ;
9203: LD_ADDR_OWVAR 42
9207: PUSH
9208: LD_INT 6
9210: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
9211: LD_ADDR_OWVAR 44
9215: PUSH
9216: LD_INT 10
9218: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
9219: LD_ADDR_OWVAR 45
9223: PUSH
9224: LD_INT 11
9226: ST_TO_ADDR
// ru4lab1 = CreateAndPlaceBuildingXYD ( 227 , 145 , 2 ) ;
9227: LD_ADDR_EXP 77
9231: PUSH
9232: LD_INT 227
9234: PPUSH
9235: LD_INT 145
9237: PPUSH
9238: LD_INT 2
9240: PPUSH
9241: CALL_OW 47
9245: ST_TO_ADDR
// bc_type = b_lab ;
9246: LD_ADDR_OWVAR 42
9250: PUSH
9251: LD_INT 6
9253: ST_TO_ADDR
// bc_kind1 = b_lab_spacetime ;
9254: LD_ADDR_OWVAR 44
9258: PUSH
9259: LD_INT 14
9261: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
9262: LD_ADDR_OWVAR 45
9266: PUSH
9267: LD_INT 12
9269: ST_TO_ADDR
// ru4lab2 = CreateAndPlaceBuildingXYD ( 221 , 153 , 4 ) ;
9270: LD_ADDR_EXP 78
9274: PUSH
9275: LD_INT 221
9277: PPUSH
9278: LD_INT 153
9280: PPUSH
9281: LD_INT 4
9283: PPUSH
9284: CALL_OW 47
9288: ST_TO_ADDR
// bc_type = 3 ;
9289: LD_ADDR_OWVAR 42
9293: PUSH
9294: LD_INT 3
9296: ST_TO_ADDR
// ru4fab = CreateAndPlaceBuildingXYD ( 207 , 141 , 1 ) ;
9297: LD_ADDR_EXP 79
9301: PUSH
9302: LD_INT 207
9304: PPUSH
9305: LD_INT 141
9307: PPUSH
9308: LD_INT 1
9310: PPUSH
9311: CALL_OW 47
9315: ST_TO_ADDR
// bc_type = 17 ;
9316: LD_ADDR_OWVAR 42
9320: PUSH
9321: LD_INT 17
9323: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 207 , 137 , 3 ) ;
9324: LD_INT 207
9326: PPUSH
9327: LD_INT 137
9329: PPUSH
9330: LD_INT 3
9332: PPUSH
9333: CALL_OW 47
// bc_type = 18 ;
9337: LD_ADDR_OWVAR 42
9341: PUSH
9342: LD_INT 18
9344: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 203 , 141 , 1 ) ;
9345: LD_INT 203
9347: PPUSH
9348: LD_INT 141
9350: PPUSH
9351: LD_INT 1
9353: PPUSH
9354: CALL_OW 47
// bc_type = 21 ;
9358: LD_ADDR_OWVAR 42
9362: PUSH
9363: LD_INT 21
9365: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 207 , 144 , 0 ) ;
9366: LD_INT 207
9368: PPUSH
9369: LD_INT 144
9371: PPUSH
9372: LD_INT 0
9374: PPUSH
9375: CALL_OW 47
// bc_type = 24 ;
9379: LD_ADDR_OWVAR 42
9383: PUSH
9384: LD_INT 24
9386: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 211 , 145 , 5 ) ;
9387: LD_INT 211
9389: PPUSH
9390: LD_INT 145
9392: PPUSH
9393: LD_INT 5
9395: PPUSH
9396: CALL_OW 47
// bc_type = 16 ;
9400: LD_ADDR_OWVAR 42
9404: PUSH
9405: LD_INT 16
9407: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 204 , 138 , 2 ) ;
9408: LD_INT 204
9410: PPUSH
9411: LD_INT 138
9413: PPUSH
9414: LD_INT 2
9416: PPUSH
9417: CALL_OW 47
// bc_type = 28 ;
9421: LD_ADDR_OWVAR 42
9425: PUSH
9426: LD_INT 28
9428: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 233 , 154 , 4 ) ;
9429: LD_INT 233
9431: PPUSH
9432: LD_INT 154
9434: PPUSH
9435: LD_INT 4
9437: PPUSH
9438: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 231 , 155 , 4 ) ;
9442: LD_INT 231
9444: PPUSH
9445: LD_INT 155
9447: PPUSH
9448: LD_INT 4
9450: PPUSH
9451: CALL_OW 47
// SetResourceVisibility ( 224 , 134 , cpu4 ) ;
9455: LD_INT 224
9457: PPUSH
9458: LD_INT 134
9460: PPUSH
9461: LD_EXP 58
9465: PPUSH
9466: CALL_OW 441
// bc_type = 29 ;
9470: LD_ADDR_OWVAR 42
9474: PUSH
9475: LD_INT 29
9477: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 224 , 134 , 2 ) ;
9478: LD_INT 224
9480: PPUSH
9481: LD_INT 134
9483: PPUSH
9484: LD_INT 2
9486: PPUSH
9487: CALL_OW 47
// SetResourceVisibility ( 224 , 150 , cpu4 ) ;
9491: LD_INT 224
9493: PPUSH
9494: LD_INT 150
9496: PPUSH
9497: LD_EXP 58
9501: PPUSH
9502: CALL_OW 441
// bc_type = 30 ;
9506: LD_ADDR_OWVAR 42
9510: PUSH
9511: LD_INT 30
9513: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 224 , 150 , 3 ) ;
9514: LD_INT 224
9516: PPUSH
9517: LD_INT 150
9519: PPUSH
9520: LD_INT 3
9522: PPUSH
9523: CALL_OW 47
// weapon = [ 46 , 45 , 47 , 44 ] ;
9527: LD_ADDR_VAR 0 2
9531: PUSH
9532: LD_INT 46
9534: PUSH
9535: LD_INT 45
9537: PUSH
9538: LD_INT 47
9540: PUSH
9541: LD_INT 44
9543: PUSH
9544: EMPTY
9545: LIST
9546: LIST
9547: LIST
9548: LIST
9549: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_btype , b_bunker ] ] ) ;
9550: LD_ADDR_VAR 0 3
9554: PUSH
9555: LD_INT 22
9557: PUSH
9558: LD_EXP 58
9562: PUSH
9563: EMPTY
9564: LIST
9565: LIST
9566: PUSH
9567: LD_INT 30
9569: PUSH
9570: LD_INT 32
9572: PUSH
9573: EMPTY
9574: LIST
9575: LIST
9576: PUSH
9577: EMPTY
9578: LIST
9579: LIST
9580: PPUSH
9581: CALL_OW 69
9585: ST_TO_ADDR
// for i in RU_turret do
9586: LD_ADDR_VAR 0 4
9590: PUSH
9591: LD_VAR 0 3
9595: PUSH
9596: FOR_IN
9597: IFFALSE 9627
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 4 ) ] ) ;
9599: LD_VAR 0 4
9603: PPUSH
9604: LD_VAR 0 2
9608: PUSH
9609: LD_INT 1
9611: PPUSH
9612: LD_INT 4
9614: PPUSH
9615: CALL_OW 12
9619: ARRAY
9620: PPUSH
9621: CALL_OW 431
// end ;
9625: GO 9596
9627: POP
9628: POP
// end ;
9629: LD_VAR 0 1
9633: RET
// export ru5depo , ru5lab1 , ru5fab , ru5armoury ; export function PlaceRussian5BaseForAI ; var weapon , RU_Turret , i ; begin
9634: LD_INT 0
9636: PPUSH
9637: PPUSH
9638: PPUSH
9639: PPUSH
// SetTech ( 11 , cpu5 , state_disabled ) ;
9640: LD_INT 11
9642: PPUSH
9643: LD_EXP 59
9647: PPUSH
9648: LD_INT 0
9650: PPUSH
9651: CALL_OW 322
// SetTech ( 2 , cpu5 , state_disabled ) ;
9655: LD_INT 2
9657: PPUSH
9658: LD_EXP 59
9662: PPUSH
9663: LD_INT 0
9665: PPUSH
9666: CALL_OW 322
// bc_level = DifficultyC ;
9670: LD_ADDR_OWVAR 43
9674: PUSH
9675: LD_EXP 25
9679: ST_TO_ADDR
// uc_nation = 3 ;
9680: LD_ADDR_OWVAR 21
9684: PUSH
9685: LD_INT 3
9687: ST_TO_ADDR
// uc_side = cpu5 ;
9688: LD_ADDR_OWVAR 20
9692: PUSH
9693: LD_EXP 59
9697: ST_TO_ADDR
// bc_type = 1 ;
9698: LD_ADDR_OWVAR 42
9702: PUSH
9703: LD_INT 1
9705: ST_TO_ADDR
// ru5depo = CreateAndPlaceBuildingXYD ( 90 , 141 , 0 ) ;
9706: LD_ADDR_EXP 81
9710: PUSH
9711: LD_INT 90
9713: PPUSH
9714: LD_INT 141
9716: PPUSH
9717: LD_INT 0
9719: PPUSH
9720: CALL_OW 47
9724: ST_TO_ADDR
// SetResourceType ( GetBase ( ru5depo ) , mat_cans , 20000 [ mat_cans ] ) ;
9725: LD_EXP 81
9729: PPUSH
9730: CALL_OW 274
9734: PPUSH
9735: LD_INT 1
9737: PPUSH
9738: LD_INT 20000
9740: PUSH
9741: LD_INT 1
9743: ARRAY
9744: PPUSH
9745: CALL_OW 277
// SetResourceType ( GetBase ( ru5depo ) , 2 , 5000 ) ;
9749: LD_EXP 81
9753: PPUSH
9754: CALL_OW 274
9758: PPUSH
9759: LD_INT 2
9761: PPUSH
9762: LD_INT 5000
9764: PPUSH
9765: CALL_OW 277
// SetResourceType ( GetBase ( ru5depo ) , 3 , 5000 ) ;
9769: LD_EXP 81
9773: PPUSH
9774: CALL_OW 274
9778: PPUSH
9779: LD_INT 3
9781: PPUSH
9782: LD_INT 5000
9784: PPUSH
9785: CALL_OW 277
// bc_type = 5 ;
9789: LD_ADDR_OWVAR 42
9793: PUSH
9794: LD_INT 5
9796: ST_TO_ADDR
// ru5armoury = CreateAndPlaceBuildingXYD ( 98 , 133 , 4 ) ;
9797: LD_ADDR_EXP 84
9801: PUSH
9802: LD_INT 98
9804: PPUSH
9805: LD_INT 133
9807: PPUSH
9808: LD_INT 4
9810: PPUSH
9811: CALL_OW 47
9815: ST_TO_ADDR
// bc_type = 32 ;
9816: LD_ADDR_OWVAR 42
9820: PUSH
9821: LD_INT 32
9823: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 80 , 122 , 2 ) ;
9824: LD_INT 80
9826: PPUSH
9827: LD_INT 122
9829: PPUSH
9830: LD_INT 2
9832: PPUSH
9833: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 99 , 130 , 4 ) ;
9837: LD_INT 99
9839: PPUSH
9840: LD_INT 130
9842: PPUSH
9843: LD_INT 4
9845: PPUSH
9846: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 112 , 151 , 4 ) ;
9850: LD_INT 112
9852: PPUSH
9853: LD_INT 151
9855: PPUSH
9856: LD_INT 4
9858: PPUSH
9859: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 95 , 128 , 3 ) ;
9863: LD_INT 95
9865: PPUSH
9866: LD_INT 128
9868: PPUSH
9869: LD_INT 3
9871: PPUSH
9872: CALL_OW 47
// bc_type = b_lab ;
9876: LD_ADDR_OWVAR 42
9880: PUSH
9881: LD_INT 6
9883: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
9884: LD_ADDR_OWVAR 44
9888: PUSH
9889: LD_INT 10
9891: ST_TO_ADDR
// bc_kind2 = b_lab_siberium ;
9892: LD_ADDR_OWVAR 45
9896: PUSH
9897: LD_INT 11
9899: ST_TO_ADDR
// ru5lab1 = CreateAndPlaceBuildingXYD ( 97 , 145 , 2 ) ;
9900: LD_ADDR_EXP 82
9904: PUSH
9905: LD_INT 97
9907: PPUSH
9908: LD_INT 145
9910: PPUSH
9911: LD_INT 2
9913: PPUSH
9914: CALL_OW 47
9918: ST_TO_ADDR
// bc_type = 3 ;
9919: LD_ADDR_OWVAR 42
9923: PUSH
9924: LD_INT 3
9926: ST_TO_ADDR
// ru5fab = CreateAndPlaceBuildingXYD ( 81 , 135 , 5 ) ;
9927: LD_ADDR_EXP 83
9931: PUSH
9932: LD_INT 81
9934: PPUSH
9935: LD_INT 135
9937: PPUSH
9938: LD_INT 5
9940: PPUSH
9941: CALL_OW 47
9945: ST_TO_ADDR
// bc_type = 17 ;
9946: LD_ADDR_OWVAR 42
9950: PUSH
9951: LD_INT 17
9953: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 85 , 139 , 5 ) ;
9954: LD_INT 85
9956: PPUSH
9957: LD_INT 139
9959: PPUSH
9960: LD_INT 5
9962: PPUSH
9963: CALL_OW 47
// bc_type = 24 ;
9967: LD_ADDR_OWVAR 42
9971: PUSH
9972: LD_INT 24
9974: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 81 , 138 , 0 ) ;
9975: LD_INT 81
9977: PPUSH
9978: LD_INT 138
9980: PPUSH
9981: LD_INT 0
9983: PPUSH
9984: CALL_OW 47
// bc_type = 16 ;
9988: LD_ADDR_OWVAR 42
9992: PUSH
9993: LD_INT 16
9995: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 77 , 135 , 1 ) ;
9996: LD_INT 77
9998: PPUSH
9999: LD_INT 135
10001: PPUSH
10002: LD_INT 1
10004: PPUSH
10005: CALL_OW 47
// bc_type = 28 ;
10009: LD_ADDR_OWVAR 42
10013: PUSH
10014: LD_INT 28
10016: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 72 , 133 , 2 ) ;
10017: LD_INT 72
10019: PPUSH
10020: LD_INT 133
10022: PPUSH
10023: LD_INT 2
10025: PPUSH
10026: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 74 , 137 , 2 ) ;
10030: LD_INT 74
10032: PPUSH
10033: LD_INT 137
10035: PPUSH
10036: LD_INT 2
10038: PPUSH
10039: CALL_OW 47
// SetResourceVisibility ( 69 , 133 , cpu5 ) ;
10043: LD_INT 69
10045: PPUSH
10046: LD_INT 133
10048: PPUSH
10049: LD_EXP 59
10053: PPUSH
10054: CALL_OW 441
// bc_type = 29 ;
10058: LD_ADDR_OWVAR 42
10062: PUSH
10063: LD_INT 29
10065: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 69 , 133 , 2 ) ;
10066: LD_INT 69
10068: PPUSH
10069: LD_INT 133
10071: PPUSH
10072: LD_INT 2
10074: PPUSH
10075: CALL_OW 47
// SetResourceVisibility ( 71 , 137 , cpu5 ) ;
10079: LD_INT 71
10081: PPUSH
10082: LD_INT 137
10084: PPUSH
10085: LD_EXP 59
10089: PPUSH
10090: CALL_OW 441
// bc_type = 30 ;
10094: LD_ADDR_OWVAR 42
10098: PUSH
10099: LD_INT 30
10101: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 71 , 137 , 3 ) ;
10102: LD_INT 71
10104: PPUSH
10105: LD_INT 137
10107: PPUSH
10108: LD_INT 3
10110: PPUSH
10111: CALL_OW 47
// weapon = [ 46 , 45 , 47 , 44 ] ;
10115: LD_ADDR_VAR 0 2
10119: PUSH
10120: LD_INT 46
10122: PUSH
10123: LD_INT 45
10125: PUSH
10126: LD_INT 47
10128: PUSH
10129: LD_INT 44
10131: PUSH
10132: EMPTY
10133: LIST
10134: LIST
10135: LIST
10136: LIST
10137: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu5 ] , [ f_btype , b_bunker ] ] ) ;
10138: LD_ADDR_VAR 0 3
10142: PUSH
10143: LD_INT 22
10145: PUSH
10146: LD_EXP 59
10150: PUSH
10151: EMPTY
10152: LIST
10153: LIST
10154: PUSH
10155: LD_INT 30
10157: PUSH
10158: LD_INT 32
10160: PUSH
10161: EMPTY
10162: LIST
10163: LIST
10164: PUSH
10165: EMPTY
10166: LIST
10167: LIST
10168: PPUSH
10169: CALL_OW 69
10173: ST_TO_ADDR
// for i in RU_turret do
10174: LD_ADDR_VAR 0 4
10178: PUSH
10179: LD_VAR 0 3
10183: PUSH
10184: FOR_IN
10185: IFFALSE 10215
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 4 ) ] ) ;
10187: LD_VAR 0 4
10191: PPUSH
10192: LD_VAR 0 2
10196: PUSH
10197: LD_INT 1
10199: PPUSH
10200: LD_INT 4
10202: PPUSH
10203: CALL_OW 12
10207: ARRAY
10208: PPUSH
10209: CALL_OW 431
// end ;
10213: GO 10184
10215: POP
10216: POP
// end ; end_of_file
10217: LD_VAR 0 1
10221: RET
// every 0 0$8 trigger Russian1AI = 1 do
10222: LD_EXP 20
10226: PUSH
10227: LD_INT 1
10229: EQUAL
10230: IFFALSE 10239
10232: GO 10234
10234: DISABLE
// begin PrepareRussian1People ;
10235: CALL 10312 0 0
// end ;
10239: END
// every 0 0$8 trigger Russian2AI = 1 do
10240: LD_EXP 21
10244: PUSH
10245: LD_INT 1
10247: EQUAL
10248: IFFALSE 10257
10250: GO 10252
10252: DISABLE
// begin PrepareRussian2People ;
10253: CALL 11497 0 0
// end ;
10257: END
// every 0 0$8 trigger Russian3AI = 1 do
10258: LD_EXP 22
10262: PUSH
10263: LD_INT 1
10265: EQUAL
10266: IFFALSE 10275
10268: GO 10270
10270: DISABLE
// begin PrepareRussian3People ;
10271: CALL 12682 0 0
// end ;
10275: END
// every 0 0$8 trigger Russian4AI = 1 do
10276: LD_EXP 23
10280: PUSH
10281: LD_INT 1
10283: EQUAL
10284: IFFALSE 10293
10286: GO 10288
10288: DISABLE
// begin PrepareRussian4People ;
10289: CALL 13867 0 0
// end ;
10293: END
// every 0 0$8 trigger Russian5AI = 1 do
10294: LD_EXP 24
10298: PUSH
10299: LD_INT 1
10301: EQUAL
10302: IFFALSE 10311
10304: GO 10306
10306: DISABLE
// begin PrepareRussian5People ;
10307: CALL 15052 0 0
// end ;
10311: END
// export function PrepareRussian1People ; var RU_turret , i , level , un , l ; begin
10312: LD_INT 0
10314: PPUSH
10315: PPUSH
10316: PPUSH
10317: PPUSH
10318: PPUSH
10319: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
10320: LD_ADDR_VAR 0 2
10324: PUSH
10325: LD_INT 22
10327: PUSH
10328: LD_EXP 55
10332: PUSH
10333: EMPTY
10334: LIST
10335: LIST
10336: PUSH
10337: LD_INT 30
10339: PUSH
10340: LD_INT 32
10342: PUSH
10343: EMPTY
10344: LIST
10345: LIST
10346: PUSH
10347: EMPTY
10348: LIST
10349: LIST
10350: PPUSH
10351: CALL_OW 69
10355: ST_TO_ADDR
// uc_side = cpu1 ;
10356: LD_ADDR_OWVAR 20
10360: PUSH
10361: LD_EXP 55
10365: ST_TO_ADDR
// uc_nation = 3 ;
10366: LD_ADDR_OWVAR 21
10370: PUSH
10371: LD_INT 3
10373: ST_TO_ADDR
// Level = difficultyC ;
10374: LD_ADDR_VAR 0 4
10378: PUSH
10379: LD_EXP 25
10383: ST_TO_ADDR
// hc_gallery =  ;
10384: LD_ADDR_OWVAR 33
10388: PUSH
10389: LD_STRING 
10391: ST_TO_ADDR
// hc_name =  ;
10392: LD_ADDR_OWVAR 26
10396: PUSH
10397: LD_STRING 
10399: ST_TO_ADDR
// for i in RU_Turret do
10400: LD_ADDR_VAR 0 3
10404: PUSH
10405: LD_VAR 0 2
10409: PUSH
10410: FOR_IN
10411: IFFALSE 10540
// begin if IsInUnit ( i ) = 0 then
10413: LD_VAR 0 3
10417: PPUSH
10418: CALL_OW 310
10422: PUSH
10423: LD_INT 0
10425: EQUAL
10426: IFFALSE 10538
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10428: LD_ADDR_OWVAR 29
10432: PUSH
10433: LD_INT 9
10435: PPUSH
10436: LD_INT 11
10438: PPUSH
10439: CALL_OW 12
10443: PUSH
10444: LD_INT 10
10446: PPUSH
10447: LD_INT 12
10449: PPUSH
10450: CALL_OW 12
10454: PUSH
10455: EMPTY
10456: LIST
10457: LIST
10458: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10459: LD_ADDR_OWVAR 31
10463: PUSH
10464: LD_VAR 0 4
10468: PUSH
10469: LD_VAR 0 4
10473: PUSH
10474: LD_VAR 0 4
10478: PUSH
10479: LD_VAR 0 4
10483: PUSH
10484: EMPTY
10485: LIST
10486: LIST
10487: LIST
10488: LIST
10489: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10490: LD_ADDR_OWVAR 27
10494: PUSH
10495: LD_INT 1
10497: PPUSH
10498: LD_INT 2
10500: PPUSH
10501: CALL_OW 12
10505: ST_TO_ADDR
// hc_class = 1 ;
10506: LD_ADDR_OWVAR 28
10510: PUSH
10511: LD_INT 1
10513: ST_TO_ADDR
// un := CreateHuman ;
10514: LD_ADDR_VAR 0 5
10518: PUSH
10519: CALL_OW 44
10523: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
10524: LD_VAR 0 5
10528: PPUSH
10529: LD_VAR 0 3
10533: PPUSH
10534: CALL_OW 52
// end ; end ;
10538: GO 10410
10540: POP
10541: POP
// for i in ru1depo do
10542: LD_ADDR_VAR 0 3
10546: PUSH
10547: LD_EXP 61
10551: PUSH
10552: FOR_IN
10553: IFFALSE 10730
// begin l = 0 ;
10555: LD_ADDR_VAR 0 6
10559: PUSH
10560: LD_INT 0
10562: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10563: LD_VAR 0 3
10567: PPUSH
10568: CALL_OW 310
10572: PUSH
10573: LD_INT 0
10575: EQUAL
10576: IFFALSE 10728
// begin repeat begin hc_gallery =  ;
10578: LD_ADDR_OWVAR 33
10582: PUSH
10583: LD_STRING 
10585: ST_TO_ADDR
// hc_name =  ;
10586: LD_ADDR_OWVAR 26
10590: PUSH
10591: LD_STRING 
10593: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10594: LD_ADDR_OWVAR 29
10598: PUSH
10599: LD_INT 9
10601: PPUSH
10602: LD_INT 11
10604: PPUSH
10605: CALL_OW 12
10609: PUSH
10610: LD_INT 10
10612: PPUSH
10613: LD_INT 12
10615: PPUSH
10616: CALL_OW 12
10620: PUSH
10621: EMPTY
10622: LIST
10623: LIST
10624: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10625: LD_ADDR_OWVAR 31
10629: PUSH
10630: LD_VAR 0 4
10634: PUSH
10635: LD_VAR 0 4
10639: PUSH
10640: LD_VAR 0 4
10644: PUSH
10645: LD_VAR 0 4
10649: PUSH
10650: EMPTY
10651: LIST
10652: LIST
10653: LIST
10654: LIST
10655: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10656: LD_ADDR_OWVAR 27
10660: PUSH
10661: LD_INT 1
10663: PPUSH
10664: LD_INT 2
10666: PPUSH
10667: CALL_OW 12
10671: ST_TO_ADDR
// hc_class = 2 ;
10672: LD_ADDR_OWVAR 28
10676: PUSH
10677: LD_INT 2
10679: ST_TO_ADDR
// un = CreateHuman ;
10680: LD_ADDR_VAR 0 5
10684: PUSH
10685: CALL_OW 44
10689: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1depo ) ;
10690: LD_VAR 0 5
10694: PPUSH
10695: LD_EXP 61
10699: PPUSH
10700: CALL_OW 52
// l = l + 1 ;
10704: LD_ADDR_VAR 0 6
10708: PUSH
10709: LD_VAR 0 6
10713: PUSH
10714: LD_INT 1
10716: PLUS
10717: ST_TO_ADDR
// end until l = 4 ;
10718: LD_VAR 0 6
10722: PUSH
10723: LD_INT 4
10725: EQUAL
10726: IFFALSE 10578
// end ; end ;
10728: GO 10552
10730: POP
10731: POP
// for i in ru1armoury do
10732: LD_ADDR_VAR 0 3
10736: PUSH
10737: LD_EXP 65
10741: PUSH
10742: FOR_IN
10743: IFFALSE 10920
// begin l = 0 ;
10745: LD_ADDR_VAR 0 6
10749: PUSH
10750: LD_INT 0
10752: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10753: LD_VAR 0 3
10757: PPUSH
10758: CALL_OW 310
10762: PUSH
10763: LD_INT 0
10765: EQUAL
10766: IFFALSE 10918
// begin repeat begin hc_gallery =  ;
10768: LD_ADDR_OWVAR 33
10772: PUSH
10773: LD_STRING 
10775: ST_TO_ADDR
// hc_name =  ;
10776: LD_ADDR_OWVAR 26
10780: PUSH
10781: LD_STRING 
10783: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10784: LD_ADDR_OWVAR 29
10788: PUSH
10789: LD_INT 9
10791: PPUSH
10792: LD_INT 11
10794: PPUSH
10795: CALL_OW 12
10799: PUSH
10800: LD_INT 10
10802: PPUSH
10803: LD_INT 12
10805: PPUSH
10806: CALL_OW 12
10810: PUSH
10811: EMPTY
10812: LIST
10813: LIST
10814: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10815: LD_ADDR_OWVAR 31
10819: PUSH
10820: LD_VAR 0 4
10824: PUSH
10825: LD_VAR 0 4
10829: PUSH
10830: LD_VAR 0 4
10834: PUSH
10835: LD_VAR 0 4
10839: PUSH
10840: EMPTY
10841: LIST
10842: LIST
10843: LIST
10844: LIST
10845: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10846: LD_ADDR_OWVAR 27
10850: PUSH
10851: LD_INT 1
10853: PPUSH
10854: LD_INT 2
10856: PPUSH
10857: CALL_OW 12
10861: ST_TO_ADDR
// hc_class = 9 ;
10862: LD_ADDR_OWVAR 28
10866: PUSH
10867: LD_INT 9
10869: ST_TO_ADDR
// un = CreateHuman ;
10870: LD_ADDR_VAR 0 5
10874: PUSH
10875: CALL_OW 44
10879: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1armoury ) ;
10880: LD_VAR 0 5
10884: PPUSH
10885: LD_EXP 65
10889: PPUSH
10890: CALL_OW 52
// l = l + 1 ;
10894: LD_ADDR_VAR 0 6
10898: PUSH
10899: LD_VAR 0 6
10903: PUSH
10904: LD_INT 1
10906: PLUS
10907: ST_TO_ADDR
// end until l = 2 ;
10908: LD_VAR 0 6
10912: PUSH
10913: LD_INT 2
10915: EQUAL
10916: IFFALSE 10768
// end ; end ;
10918: GO 10742
10920: POP
10921: POP
// for i in ru1fab do
10922: LD_ADDR_VAR 0 3
10926: PUSH
10927: LD_EXP 64
10931: PUSH
10932: FOR_IN
10933: IFFALSE 11110
// begin l = 0 ;
10935: LD_ADDR_VAR 0 6
10939: PUSH
10940: LD_INT 0
10942: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10943: LD_VAR 0 3
10947: PPUSH
10948: CALL_OW 310
10952: PUSH
10953: LD_INT 0
10955: EQUAL
10956: IFFALSE 11108
// begin repeat begin hc_gallery =  ;
10958: LD_ADDR_OWVAR 33
10962: PUSH
10963: LD_STRING 
10965: ST_TO_ADDR
// hc_name =  ;
10966: LD_ADDR_OWVAR 26
10970: PUSH
10971: LD_STRING 
10973: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10974: LD_ADDR_OWVAR 29
10978: PUSH
10979: LD_INT 9
10981: PPUSH
10982: LD_INT 11
10984: PPUSH
10985: CALL_OW 12
10989: PUSH
10990: LD_INT 10
10992: PPUSH
10993: LD_INT 12
10995: PPUSH
10996: CALL_OW 12
11000: PUSH
11001: EMPTY
11002: LIST
11003: LIST
11004: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11005: LD_ADDR_OWVAR 31
11009: PUSH
11010: LD_VAR 0 4
11014: PUSH
11015: LD_VAR 0 4
11019: PUSH
11020: LD_VAR 0 4
11024: PUSH
11025: LD_VAR 0 4
11029: PUSH
11030: EMPTY
11031: LIST
11032: LIST
11033: LIST
11034: LIST
11035: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11036: LD_ADDR_OWVAR 27
11040: PUSH
11041: LD_INT 1
11043: PPUSH
11044: LD_INT 2
11046: PPUSH
11047: CALL_OW 12
11051: ST_TO_ADDR
// hc_class = 3 ;
11052: LD_ADDR_OWVAR 28
11056: PUSH
11057: LD_INT 3
11059: ST_TO_ADDR
// un = CreateHuman ;
11060: LD_ADDR_VAR 0 5
11064: PUSH
11065: CALL_OW 44
11069: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1fab ) ;
11070: LD_VAR 0 5
11074: PPUSH
11075: LD_EXP 64
11079: PPUSH
11080: CALL_OW 52
// l = l + 1 ;
11084: LD_ADDR_VAR 0 6
11088: PUSH
11089: LD_VAR 0 6
11093: PUSH
11094: LD_INT 1
11096: PLUS
11097: ST_TO_ADDR
// end until l = 6 ;
11098: LD_VAR 0 6
11102: PUSH
11103: LD_INT 6
11105: EQUAL
11106: IFFALSE 10958
// end ; end ;
11108: GO 10932
11110: POP
11111: POP
// for i in ru1lab1 do
11112: LD_ADDR_VAR 0 3
11116: PUSH
11117: LD_EXP 62
11121: PUSH
11122: FOR_IN
11123: IFFALSE 11300
// begin l = 0 ;
11125: LD_ADDR_VAR 0 6
11129: PUSH
11130: LD_INT 0
11132: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
11133: LD_VAR 0 3
11137: PPUSH
11138: CALL_OW 310
11142: PUSH
11143: LD_INT 0
11145: EQUAL
11146: IFFALSE 11298
// begin repeat begin hc_gallery =  ;
11148: LD_ADDR_OWVAR 33
11152: PUSH
11153: LD_STRING 
11155: ST_TO_ADDR
// hc_name =  ;
11156: LD_ADDR_OWVAR 26
11160: PUSH
11161: LD_STRING 
11163: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11164: LD_ADDR_OWVAR 29
11168: PUSH
11169: LD_INT 9
11171: PPUSH
11172: LD_INT 11
11174: PPUSH
11175: CALL_OW 12
11179: PUSH
11180: LD_INT 10
11182: PPUSH
11183: LD_INT 12
11185: PPUSH
11186: CALL_OW 12
11190: PUSH
11191: EMPTY
11192: LIST
11193: LIST
11194: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11195: LD_ADDR_OWVAR 31
11199: PUSH
11200: LD_VAR 0 4
11204: PUSH
11205: LD_VAR 0 4
11209: PUSH
11210: LD_VAR 0 4
11214: PUSH
11215: LD_VAR 0 4
11219: PUSH
11220: EMPTY
11221: LIST
11222: LIST
11223: LIST
11224: LIST
11225: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11226: LD_ADDR_OWVAR 27
11230: PUSH
11231: LD_INT 1
11233: PPUSH
11234: LD_INT 2
11236: PPUSH
11237: CALL_OW 12
11241: ST_TO_ADDR
// hc_class = 4 ;
11242: LD_ADDR_OWVAR 28
11246: PUSH
11247: LD_INT 4
11249: ST_TO_ADDR
// un = CreateHuman ;
11250: LD_ADDR_VAR 0 5
11254: PUSH
11255: CALL_OW 44
11259: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1lab1 ) ;
11260: LD_VAR 0 5
11264: PPUSH
11265: LD_EXP 62
11269: PPUSH
11270: CALL_OW 52
// l = l + 1 ;
11274: LD_ADDR_VAR 0 6
11278: PUSH
11279: LD_VAR 0 6
11283: PUSH
11284: LD_INT 1
11286: PLUS
11287: ST_TO_ADDR
// end until l = 4 ;
11288: LD_VAR 0 6
11292: PUSH
11293: LD_INT 4
11295: EQUAL
11296: IFFALSE 11148
// end ; end ;
11298: GO 11122
11300: POP
11301: POP
// for i in ru1lab2 do
11302: LD_ADDR_VAR 0 3
11306: PUSH
11307: LD_EXP 63
11311: PUSH
11312: FOR_IN
11313: IFFALSE 11490
// begin l = 0 ;
11315: LD_ADDR_VAR 0 6
11319: PUSH
11320: LD_INT 0
11322: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
11323: LD_VAR 0 3
11327: PPUSH
11328: CALL_OW 310
11332: PUSH
11333: LD_INT 0
11335: EQUAL
11336: IFFALSE 11488
// begin repeat begin hc_gallery =  ;
11338: LD_ADDR_OWVAR 33
11342: PUSH
11343: LD_STRING 
11345: ST_TO_ADDR
// hc_name =  ;
11346: LD_ADDR_OWVAR 26
11350: PUSH
11351: LD_STRING 
11353: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11354: LD_ADDR_OWVAR 29
11358: PUSH
11359: LD_INT 9
11361: PPUSH
11362: LD_INT 11
11364: PPUSH
11365: CALL_OW 12
11369: PUSH
11370: LD_INT 10
11372: PPUSH
11373: LD_INT 12
11375: PPUSH
11376: CALL_OW 12
11380: PUSH
11381: EMPTY
11382: LIST
11383: LIST
11384: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11385: LD_ADDR_OWVAR 31
11389: PUSH
11390: LD_VAR 0 4
11394: PUSH
11395: LD_VAR 0 4
11399: PUSH
11400: LD_VAR 0 4
11404: PUSH
11405: LD_VAR 0 4
11409: PUSH
11410: EMPTY
11411: LIST
11412: LIST
11413: LIST
11414: LIST
11415: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11416: LD_ADDR_OWVAR 27
11420: PUSH
11421: LD_INT 1
11423: PPUSH
11424: LD_INT 2
11426: PPUSH
11427: CALL_OW 12
11431: ST_TO_ADDR
// hc_class = 4 ;
11432: LD_ADDR_OWVAR 28
11436: PUSH
11437: LD_INT 4
11439: ST_TO_ADDR
// un = CreateHuman ;
11440: LD_ADDR_VAR 0 5
11444: PUSH
11445: CALL_OW 44
11449: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru1lab2 ) ;
11450: LD_VAR 0 5
11454: PPUSH
11455: LD_EXP 63
11459: PPUSH
11460: CALL_OW 52
// l = l + 1 ;
11464: LD_ADDR_VAR 0 6
11468: PUSH
11469: LD_VAR 0 6
11473: PUSH
11474: LD_INT 1
11476: PLUS
11477: ST_TO_ADDR
// end until l = 4 ;
11478: LD_VAR 0 6
11482: PUSH
11483: LD_INT 4
11485: EQUAL
11486: IFFALSE 11338
// end ; end ;
11488: GO 11312
11490: POP
11491: POP
// end ;
11492: LD_VAR 0 1
11496: RET
// export function PrepareRussian2People ; var RU_turret , i , level , un , l ; begin
11497: LD_INT 0
11499: PPUSH
11500: PPUSH
11501: PPUSH
11502: PPUSH
11503: PPUSH
11504: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_btype , b_bunker ] ] ) ;
11505: LD_ADDR_VAR 0 2
11509: PUSH
11510: LD_INT 22
11512: PUSH
11513: LD_EXP 56
11517: PUSH
11518: EMPTY
11519: LIST
11520: LIST
11521: PUSH
11522: LD_INT 30
11524: PUSH
11525: LD_INT 32
11527: PUSH
11528: EMPTY
11529: LIST
11530: LIST
11531: PUSH
11532: EMPTY
11533: LIST
11534: LIST
11535: PPUSH
11536: CALL_OW 69
11540: ST_TO_ADDR
// uc_side = cpu2 ;
11541: LD_ADDR_OWVAR 20
11545: PUSH
11546: LD_EXP 56
11550: ST_TO_ADDR
// uc_nation = 3 ;
11551: LD_ADDR_OWVAR 21
11555: PUSH
11556: LD_INT 3
11558: ST_TO_ADDR
// Level = difficultyC ;
11559: LD_ADDR_VAR 0 4
11563: PUSH
11564: LD_EXP 25
11568: ST_TO_ADDR
// hc_gallery =  ;
11569: LD_ADDR_OWVAR 33
11573: PUSH
11574: LD_STRING 
11576: ST_TO_ADDR
// hc_name =  ;
11577: LD_ADDR_OWVAR 26
11581: PUSH
11582: LD_STRING 
11584: ST_TO_ADDR
// for i in RU_Turret do
11585: LD_ADDR_VAR 0 3
11589: PUSH
11590: LD_VAR 0 2
11594: PUSH
11595: FOR_IN
11596: IFFALSE 11725
// begin if IsInUnit ( i ) = 0 then
11598: LD_VAR 0 3
11602: PPUSH
11603: CALL_OW 310
11607: PUSH
11608: LD_INT 0
11610: EQUAL
11611: IFFALSE 11723
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11613: LD_ADDR_OWVAR 29
11617: PUSH
11618: LD_INT 9
11620: PPUSH
11621: LD_INT 11
11623: PPUSH
11624: CALL_OW 12
11628: PUSH
11629: LD_INT 10
11631: PPUSH
11632: LD_INT 12
11634: PPUSH
11635: CALL_OW 12
11639: PUSH
11640: EMPTY
11641: LIST
11642: LIST
11643: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11644: LD_ADDR_OWVAR 31
11648: PUSH
11649: LD_VAR 0 4
11653: PUSH
11654: LD_VAR 0 4
11658: PUSH
11659: LD_VAR 0 4
11663: PUSH
11664: LD_VAR 0 4
11668: PUSH
11669: EMPTY
11670: LIST
11671: LIST
11672: LIST
11673: LIST
11674: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11675: LD_ADDR_OWVAR 27
11679: PUSH
11680: LD_INT 1
11682: PPUSH
11683: LD_INT 2
11685: PPUSH
11686: CALL_OW 12
11690: ST_TO_ADDR
// hc_class = 1 ;
11691: LD_ADDR_OWVAR 28
11695: PUSH
11696: LD_INT 1
11698: ST_TO_ADDR
// un := CreateHuman ;
11699: LD_ADDR_VAR 0 5
11703: PUSH
11704: CALL_OW 44
11708: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
11709: LD_VAR 0 5
11713: PPUSH
11714: LD_VAR 0 3
11718: PPUSH
11719: CALL_OW 52
// end ; end ;
11723: GO 11595
11725: POP
11726: POP
// for i in ru2depo do
11727: LD_ADDR_VAR 0 3
11731: PUSH
11732: LD_EXP 66
11736: PUSH
11737: FOR_IN
11738: IFFALSE 11915
// begin l = 0 ;
11740: LD_ADDR_VAR 0 6
11744: PUSH
11745: LD_INT 0
11747: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
11748: LD_VAR 0 3
11752: PPUSH
11753: CALL_OW 310
11757: PUSH
11758: LD_INT 0
11760: EQUAL
11761: IFFALSE 11913
// begin repeat begin hc_gallery =  ;
11763: LD_ADDR_OWVAR 33
11767: PUSH
11768: LD_STRING 
11770: ST_TO_ADDR
// hc_name =  ;
11771: LD_ADDR_OWVAR 26
11775: PUSH
11776: LD_STRING 
11778: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11779: LD_ADDR_OWVAR 29
11783: PUSH
11784: LD_INT 9
11786: PPUSH
11787: LD_INT 11
11789: PPUSH
11790: CALL_OW 12
11794: PUSH
11795: LD_INT 10
11797: PPUSH
11798: LD_INT 12
11800: PPUSH
11801: CALL_OW 12
11805: PUSH
11806: EMPTY
11807: LIST
11808: LIST
11809: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11810: LD_ADDR_OWVAR 31
11814: PUSH
11815: LD_VAR 0 4
11819: PUSH
11820: LD_VAR 0 4
11824: PUSH
11825: LD_VAR 0 4
11829: PUSH
11830: LD_VAR 0 4
11834: PUSH
11835: EMPTY
11836: LIST
11837: LIST
11838: LIST
11839: LIST
11840: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
11841: LD_ADDR_OWVAR 27
11845: PUSH
11846: LD_INT 1
11848: PPUSH
11849: LD_INT 2
11851: PPUSH
11852: CALL_OW 12
11856: ST_TO_ADDR
// hc_class = 2 ;
11857: LD_ADDR_OWVAR 28
11861: PUSH
11862: LD_INT 2
11864: ST_TO_ADDR
// un = CreateHuman ;
11865: LD_ADDR_VAR 0 5
11869: PUSH
11870: CALL_OW 44
11874: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2depo ) ;
11875: LD_VAR 0 5
11879: PPUSH
11880: LD_EXP 66
11884: PPUSH
11885: CALL_OW 52
// l = l + 1 ;
11889: LD_ADDR_VAR 0 6
11893: PUSH
11894: LD_VAR 0 6
11898: PUSH
11899: LD_INT 1
11901: PLUS
11902: ST_TO_ADDR
// end until l = 4 ;
11903: LD_VAR 0 6
11907: PUSH
11908: LD_INT 4
11910: EQUAL
11911: IFFALSE 11763
// end ; end ;
11913: GO 11737
11915: POP
11916: POP
// for i in ru2armoury do
11917: LD_ADDR_VAR 0 3
11921: PUSH
11922: LD_EXP 70
11926: PUSH
11927: FOR_IN
11928: IFFALSE 12105
// begin l = 0 ;
11930: LD_ADDR_VAR 0 6
11934: PUSH
11935: LD_INT 0
11937: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
11938: LD_VAR 0 3
11942: PPUSH
11943: CALL_OW 310
11947: PUSH
11948: LD_INT 0
11950: EQUAL
11951: IFFALSE 12103
// begin repeat begin hc_gallery =  ;
11953: LD_ADDR_OWVAR 33
11957: PUSH
11958: LD_STRING 
11960: ST_TO_ADDR
// hc_name =  ;
11961: LD_ADDR_OWVAR 26
11965: PUSH
11966: LD_STRING 
11968: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
11969: LD_ADDR_OWVAR 29
11973: PUSH
11974: LD_INT 9
11976: PPUSH
11977: LD_INT 11
11979: PPUSH
11980: CALL_OW 12
11984: PUSH
11985: LD_INT 10
11987: PPUSH
11988: LD_INT 12
11990: PPUSH
11991: CALL_OW 12
11995: PUSH
11996: EMPTY
11997: LIST
11998: LIST
11999: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12000: LD_ADDR_OWVAR 31
12004: PUSH
12005: LD_VAR 0 4
12009: PUSH
12010: LD_VAR 0 4
12014: PUSH
12015: LD_VAR 0 4
12019: PUSH
12020: LD_VAR 0 4
12024: PUSH
12025: EMPTY
12026: LIST
12027: LIST
12028: LIST
12029: LIST
12030: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12031: LD_ADDR_OWVAR 27
12035: PUSH
12036: LD_INT 1
12038: PPUSH
12039: LD_INT 2
12041: PPUSH
12042: CALL_OW 12
12046: ST_TO_ADDR
// hc_class = 9 ;
12047: LD_ADDR_OWVAR 28
12051: PUSH
12052: LD_INT 9
12054: ST_TO_ADDR
// un = CreateHuman ;
12055: LD_ADDR_VAR 0 5
12059: PUSH
12060: CALL_OW 44
12064: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2armoury ) ;
12065: LD_VAR 0 5
12069: PPUSH
12070: LD_EXP 70
12074: PPUSH
12075: CALL_OW 52
// l = l + 1 ;
12079: LD_ADDR_VAR 0 6
12083: PUSH
12084: LD_VAR 0 6
12088: PUSH
12089: LD_INT 1
12091: PLUS
12092: ST_TO_ADDR
// end until l = 2 ;
12093: LD_VAR 0 6
12097: PUSH
12098: LD_INT 2
12100: EQUAL
12101: IFFALSE 11953
// end ; end ;
12103: GO 11927
12105: POP
12106: POP
// for i in ru2fab do
12107: LD_ADDR_VAR 0 3
12111: PUSH
12112: LD_EXP 69
12116: PUSH
12117: FOR_IN
12118: IFFALSE 12295
// begin l = 0 ;
12120: LD_ADDR_VAR 0 6
12124: PUSH
12125: LD_INT 0
12127: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12128: LD_VAR 0 3
12132: PPUSH
12133: CALL_OW 310
12137: PUSH
12138: LD_INT 0
12140: EQUAL
12141: IFFALSE 12293
// begin repeat begin hc_gallery =  ;
12143: LD_ADDR_OWVAR 33
12147: PUSH
12148: LD_STRING 
12150: ST_TO_ADDR
// hc_name =  ;
12151: LD_ADDR_OWVAR 26
12155: PUSH
12156: LD_STRING 
12158: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12159: LD_ADDR_OWVAR 29
12163: PUSH
12164: LD_INT 9
12166: PPUSH
12167: LD_INT 11
12169: PPUSH
12170: CALL_OW 12
12174: PUSH
12175: LD_INT 10
12177: PPUSH
12178: LD_INT 12
12180: PPUSH
12181: CALL_OW 12
12185: PUSH
12186: EMPTY
12187: LIST
12188: LIST
12189: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12190: LD_ADDR_OWVAR 31
12194: PUSH
12195: LD_VAR 0 4
12199: PUSH
12200: LD_VAR 0 4
12204: PUSH
12205: LD_VAR 0 4
12209: PUSH
12210: LD_VAR 0 4
12214: PUSH
12215: EMPTY
12216: LIST
12217: LIST
12218: LIST
12219: LIST
12220: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12221: LD_ADDR_OWVAR 27
12225: PUSH
12226: LD_INT 1
12228: PPUSH
12229: LD_INT 2
12231: PPUSH
12232: CALL_OW 12
12236: ST_TO_ADDR
// hc_class = 3 ;
12237: LD_ADDR_OWVAR 28
12241: PUSH
12242: LD_INT 3
12244: ST_TO_ADDR
// un = CreateHuman ;
12245: LD_ADDR_VAR 0 5
12249: PUSH
12250: CALL_OW 44
12254: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2fab ) ;
12255: LD_VAR 0 5
12259: PPUSH
12260: LD_EXP 69
12264: PPUSH
12265: CALL_OW 52
// l = l + 1 ;
12269: LD_ADDR_VAR 0 6
12273: PUSH
12274: LD_VAR 0 6
12278: PUSH
12279: LD_INT 1
12281: PLUS
12282: ST_TO_ADDR
// end until l = 6 ;
12283: LD_VAR 0 6
12287: PUSH
12288: LD_INT 6
12290: EQUAL
12291: IFFALSE 12143
// end ; end ;
12293: GO 12117
12295: POP
12296: POP
// for i in ru2lab1 do
12297: LD_ADDR_VAR 0 3
12301: PUSH
12302: LD_EXP 67
12306: PUSH
12307: FOR_IN
12308: IFFALSE 12485
// begin l = 0 ;
12310: LD_ADDR_VAR 0 6
12314: PUSH
12315: LD_INT 0
12317: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12318: LD_VAR 0 3
12322: PPUSH
12323: CALL_OW 310
12327: PUSH
12328: LD_INT 0
12330: EQUAL
12331: IFFALSE 12483
// begin repeat begin hc_gallery =  ;
12333: LD_ADDR_OWVAR 33
12337: PUSH
12338: LD_STRING 
12340: ST_TO_ADDR
// hc_name =  ;
12341: LD_ADDR_OWVAR 26
12345: PUSH
12346: LD_STRING 
12348: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12349: LD_ADDR_OWVAR 29
12353: PUSH
12354: LD_INT 9
12356: PPUSH
12357: LD_INT 11
12359: PPUSH
12360: CALL_OW 12
12364: PUSH
12365: LD_INT 10
12367: PPUSH
12368: LD_INT 12
12370: PPUSH
12371: CALL_OW 12
12375: PUSH
12376: EMPTY
12377: LIST
12378: LIST
12379: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12380: LD_ADDR_OWVAR 31
12384: PUSH
12385: LD_VAR 0 4
12389: PUSH
12390: LD_VAR 0 4
12394: PUSH
12395: LD_VAR 0 4
12399: PUSH
12400: LD_VAR 0 4
12404: PUSH
12405: EMPTY
12406: LIST
12407: LIST
12408: LIST
12409: LIST
12410: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12411: LD_ADDR_OWVAR 27
12415: PUSH
12416: LD_INT 1
12418: PPUSH
12419: LD_INT 2
12421: PPUSH
12422: CALL_OW 12
12426: ST_TO_ADDR
// hc_class = 4 ;
12427: LD_ADDR_OWVAR 28
12431: PUSH
12432: LD_INT 4
12434: ST_TO_ADDR
// un = CreateHuman ;
12435: LD_ADDR_VAR 0 5
12439: PUSH
12440: CALL_OW 44
12444: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2lab1 ) ;
12445: LD_VAR 0 5
12449: PPUSH
12450: LD_EXP 67
12454: PPUSH
12455: CALL_OW 52
// l = l + 1 ;
12459: LD_ADDR_VAR 0 6
12463: PUSH
12464: LD_VAR 0 6
12468: PUSH
12469: LD_INT 1
12471: PLUS
12472: ST_TO_ADDR
// end until l = 4 ;
12473: LD_VAR 0 6
12477: PUSH
12478: LD_INT 4
12480: EQUAL
12481: IFFALSE 12333
// end ; end ;
12483: GO 12307
12485: POP
12486: POP
// for i in ru2lab2 do
12487: LD_ADDR_VAR 0 3
12491: PUSH
12492: LD_EXP 68
12496: PUSH
12497: FOR_IN
12498: IFFALSE 12675
// begin l = 0 ;
12500: LD_ADDR_VAR 0 6
12504: PUSH
12505: LD_INT 0
12507: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12508: LD_VAR 0 3
12512: PPUSH
12513: CALL_OW 310
12517: PUSH
12518: LD_INT 0
12520: EQUAL
12521: IFFALSE 12673
// begin repeat begin hc_gallery =  ;
12523: LD_ADDR_OWVAR 33
12527: PUSH
12528: LD_STRING 
12530: ST_TO_ADDR
// hc_name =  ;
12531: LD_ADDR_OWVAR 26
12535: PUSH
12536: LD_STRING 
12538: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12539: LD_ADDR_OWVAR 29
12543: PUSH
12544: LD_INT 9
12546: PPUSH
12547: LD_INT 11
12549: PPUSH
12550: CALL_OW 12
12554: PUSH
12555: LD_INT 10
12557: PPUSH
12558: LD_INT 12
12560: PPUSH
12561: CALL_OW 12
12565: PUSH
12566: EMPTY
12567: LIST
12568: LIST
12569: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12570: LD_ADDR_OWVAR 31
12574: PUSH
12575: LD_VAR 0 4
12579: PUSH
12580: LD_VAR 0 4
12584: PUSH
12585: LD_VAR 0 4
12589: PUSH
12590: LD_VAR 0 4
12594: PUSH
12595: EMPTY
12596: LIST
12597: LIST
12598: LIST
12599: LIST
12600: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12601: LD_ADDR_OWVAR 27
12605: PUSH
12606: LD_INT 1
12608: PPUSH
12609: LD_INT 2
12611: PPUSH
12612: CALL_OW 12
12616: ST_TO_ADDR
// hc_class = 4 ;
12617: LD_ADDR_OWVAR 28
12621: PUSH
12622: LD_INT 4
12624: ST_TO_ADDR
// un = CreateHuman ;
12625: LD_ADDR_VAR 0 5
12629: PUSH
12630: CALL_OW 44
12634: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru2lab2 ) ;
12635: LD_VAR 0 5
12639: PPUSH
12640: LD_EXP 68
12644: PPUSH
12645: CALL_OW 52
// l = l + 1 ;
12649: LD_ADDR_VAR 0 6
12653: PUSH
12654: LD_VAR 0 6
12658: PUSH
12659: LD_INT 1
12661: PLUS
12662: ST_TO_ADDR
// end until l = 4 ;
12663: LD_VAR 0 6
12667: PUSH
12668: LD_INT 4
12670: EQUAL
12671: IFFALSE 12523
// end ; end ;
12673: GO 12497
12675: POP
12676: POP
// end ;
12677: LD_VAR 0 1
12681: RET
// export function PrepareRussian3People ; var RU_turret , i , level , un , l ; begin
12682: LD_INT 0
12684: PPUSH
12685: PPUSH
12686: PPUSH
12687: PPUSH
12688: PPUSH
12689: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_btype , b_bunker ] ] ) ;
12690: LD_ADDR_VAR 0 2
12694: PUSH
12695: LD_INT 22
12697: PUSH
12698: LD_EXP 57
12702: PUSH
12703: EMPTY
12704: LIST
12705: LIST
12706: PUSH
12707: LD_INT 30
12709: PUSH
12710: LD_INT 32
12712: PUSH
12713: EMPTY
12714: LIST
12715: LIST
12716: PUSH
12717: EMPTY
12718: LIST
12719: LIST
12720: PPUSH
12721: CALL_OW 69
12725: ST_TO_ADDR
// uc_side = cpu3 ;
12726: LD_ADDR_OWVAR 20
12730: PUSH
12731: LD_EXP 57
12735: ST_TO_ADDR
// uc_nation = 3 ;
12736: LD_ADDR_OWVAR 21
12740: PUSH
12741: LD_INT 3
12743: ST_TO_ADDR
// Level = difficultyC ;
12744: LD_ADDR_VAR 0 4
12748: PUSH
12749: LD_EXP 25
12753: ST_TO_ADDR
// hc_gallery =  ;
12754: LD_ADDR_OWVAR 33
12758: PUSH
12759: LD_STRING 
12761: ST_TO_ADDR
// hc_name =  ;
12762: LD_ADDR_OWVAR 26
12766: PUSH
12767: LD_STRING 
12769: ST_TO_ADDR
// for i in RU_Turret do
12770: LD_ADDR_VAR 0 3
12774: PUSH
12775: LD_VAR 0 2
12779: PUSH
12780: FOR_IN
12781: IFFALSE 12910
// begin if IsInUnit ( i ) = 0 then
12783: LD_VAR 0 3
12787: PPUSH
12788: CALL_OW 310
12792: PUSH
12793: LD_INT 0
12795: EQUAL
12796: IFFALSE 12908
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12798: LD_ADDR_OWVAR 29
12802: PUSH
12803: LD_INT 9
12805: PPUSH
12806: LD_INT 11
12808: PPUSH
12809: CALL_OW 12
12813: PUSH
12814: LD_INT 10
12816: PPUSH
12817: LD_INT 12
12819: PPUSH
12820: CALL_OW 12
12824: PUSH
12825: EMPTY
12826: LIST
12827: LIST
12828: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12829: LD_ADDR_OWVAR 31
12833: PUSH
12834: LD_VAR 0 4
12838: PUSH
12839: LD_VAR 0 4
12843: PUSH
12844: LD_VAR 0 4
12848: PUSH
12849: LD_VAR 0 4
12853: PUSH
12854: EMPTY
12855: LIST
12856: LIST
12857: LIST
12858: LIST
12859: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
12860: LD_ADDR_OWVAR 27
12864: PUSH
12865: LD_INT 1
12867: PPUSH
12868: LD_INT 2
12870: PPUSH
12871: CALL_OW 12
12875: ST_TO_ADDR
// hc_class = 1 ;
12876: LD_ADDR_OWVAR 28
12880: PUSH
12881: LD_INT 1
12883: ST_TO_ADDR
// un := CreateHuman ;
12884: LD_ADDR_VAR 0 5
12888: PUSH
12889: CALL_OW 44
12893: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
12894: LD_VAR 0 5
12898: PPUSH
12899: LD_VAR 0 3
12903: PPUSH
12904: CALL_OW 52
// end ; end ;
12908: GO 12780
12910: POP
12911: POP
// for i in ru3depo do
12912: LD_ADDR_VAR 0 3
12916: PUSH
12917: LD_EXP 71
12921: PUSH
12922: FOR_IN
12923: IFFALSE 13100
// begin l = 0 ;
12925: LD_ADDR_VAR 0 6
12929: PUSH
12930: LD_INT 0
12932: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
12933: LD_VAR 0 3
12937: PPUSH
12938: CALL_OW 310
12942: PUSH
12943: LD_INT 0
12945: EQUAL
12946: IFFALSE 13098
// begin repeat begin hc_gallery =  ;
12948: LD_ADDR_OWVAR 33
12952: PUSH
12953: LD_STRING 
12955: ST_TO_ADDR
// hc_name =  ;
12956: LD_ADDR_OWVAR 26
12960: PUSH
12961: LD_STRING 
12963: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
12964: LD_ADDR_OWVAR 29
12968: PUSH
12969: LD_INT 9
12971: PPUSH
12972: LD_INT 11
12974: PPUSH
12975: CALL_OW 12
12979: PUSH
12980: LD_INT 10
12982: PPUSH
12983: LD_INT 12
12985: PPUSH
12986: CALL_OW 12
12990: PUSH
12991: EMPTY
12992: LIST
12993: LIST
12994: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
12995: LD_ADDR_OWVAR 31
12999: PUSH
13000: LD_VAR 0 4
13004: PUSH
13005: LD_VAR 0 4
13009: PUSH
13010: LD_VAR 0 4
13014: PUSH
13015: LD_VAR 0 4
13019: PUSH
13020: EMPTY
13021: LIST
13022: LIST
13023: LIST
13024: LIST
13025: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
13026: LD_ADDR_OWVAR 27
13030: PUSH
13031: LD_INT 1
13033: PPUSH
13034: LD_INT 2
13036: PPUSH
13037: CALL_OW 12
13041: ST_TO_ADDR
// hc_class = 2 ;
13042: LD_ADDR_OWVAR 28
13046: PUSH
13047: LD_INT 2
13049: ST_TO_ADDR
// un = CreateHuman ;
13050: LD_ADDR_VAR 0 5
13054: PUSH
13055: CALL_OW 44
13059: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru3depo ) ;
13060: LD_VAR 0 5
13064: PPUSH
13065: LD_EXP 71
13069: PPUSH
13070: CALL_OW 52
// l = l + 1 ;
13074: LD_ADDR_VAR 0 6
13078: PUSH
13079: LD_VAR 0 6
13083: PUSH
13084: LD_INT 1
13086: PLUS
13087: ST_TO_ADDR
// end until l = 4 ;
13088: LD_VAR 0 6
13092: PUSH
13093: LD_INT 4
13095: EQUAL
13096: IFFALSE 12948
// end ; end ;
13098: GO 12922
13100: POP
13101: POP
// for i in ru3armoury do
13102: LD_ADDR_VAR 0 3
13106: PUSH
13107: LD_EXP 75
13111: PUSH
13112: FOR_IN
13113: IFFALSE 13290
// begin l = 0 ;
13115: LD_ADDR_VAR 0 6
13119: PUSH
13120: LD_INT 0
13122: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
13123: LD_VAR 0 3
13127: PPUSH
13128: CALL_OW 310
13132: PUSH
13133: LD_INT 0
13135: EQUAL
13136: IFFALSE 13288
// begin repeat begin hc_gallery =  ;
13138: LD_ADDR_OWVAR 33
13142: PUSH
13143: LD_STRING 
13145: ST_TO_ADDR
// hc_name =  ;
13146: LD_ADDR_OWVAR 26
13150: PUSH
13151: LD_STRING 
13153: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
13154: LD_ADDR_OWVAR 29
13158: PUSH
13159: LD_INT 9
13161: PPUSH
13162: LD_INT 11
13164: PPUSH
13165: CALL_OW 12
13169: PUSH
13170: LD_INT 10
13172: PPUSH
13173: LD_INT 12
13175: PPUSH
13176: CALL_OW 12
13180: PUSH
13181: EMPTY
13182: LIST
13183: LIST
13184: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
13185: LD_ADDR_OWVAR 31
13189: PUSH
13190: LD_VAR 0 4
13194: PUSH
13195: LD_VAR 0 4
13199: PUSH
13200: LD_VAR 0 4
13204: PUSH
13205: LD_VAR 0 4
13209: PUSH
13210: EMPTY
13211: LIST
13212: LIST
13213: LIST
13214: LIST
13215: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
13216: LD_ADDR_OWVAR 27
13220: PUSH
13221: LD_INT 1
13223: PPUSH
13224: LD_INT 2
13226: PPUSH
13227: CALL_OW 12
13231: ST_TO_ADDR
// hc_class = 9 ;
13232: LD_ADDR_OWVAR 28
13236: PUSH
13237: LD_INT 9
13239: ST_TO_ADDR
// un = CreateHuman ;
13240: LD_ADDR_VAR 0 5
13244: PUSH
13245: CALL_OW 44
13249: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru3armoury ) ;
13250: LD_VAR 0 5
13254: PPUSH
13255: LD_EXP 75
13259: PPUSH
13260: CALL_OW 52
// l = l + 1 ;
13264: LD_ADDR_VAR 0 6
13268: PUSH
13269: LD_VAR 0 6
13273: PUSH
13274: LD_INT 1
13276: PLUS
13277: ST_TO_ADDR
// end until l = 2 ;
13278: LD_VAR 0 6
13282: PUSH
13283: LD_INT 2
13285: EQUAL
13286: IFFALSE 13138
// end ; end ;
13288: GO 13112
13290: POP
13291: POP
// for i in ru3fab do
13292: LD_ADDR_VAR 0 3
13296: PUSH
13297: LD_EXP 74
13301: PUSH
13302: FOR_IN
13303: IFFALSE 13480
// begin l = 0 ;
13305: LD_ADDR_VAR 0 6
13309: PUSH
13310: LD_INT 0
13312: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
13313: LD_VAR 0 3
13317: PPUSH
13318: CALL_OW 310
13322: PUSH
13323: LD_INT 0
13325: EQUAL
13326: IFFALSE 13478
// begin repeat begin hc_gallery =  ;
13328: LD_ADDR_OWVAR 33
13332: PUSH
13333: LD_STRING 
13335: ST_TO_ADDR
// hc_name =  ;
13336: LD_ADDR_OWVAR 26
13340: PUSH
13341: LD_STRING 
13343: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
13344: LD_ADDR_OWVAR 29
13348: PUSH
13349: LD_INT 9
13351: PPUSH
13352: LD_INT 11
13354: PPUSH
13355: CALL_OW 12
13359: PUSH
13360: LD_INT 10
13362: PPUSH
13363: LD_INT 12
13365: PPUSH
13366: CALL_OW 12
13370: PUSH
13371: EMPTY
13372: LIST
13373: LIST
13374: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
13375: LD_ADDR_OWVAR 31
13379: PUSH
13380: LD_VAR 0 4
13384: PUSH
13385: LD_VAR 0 4
13389: PUSH
13390: LD_VAR 0 4
13394: PUSH
13395: LD_VAR 0 4
13399: PUSH
13400: EMPTY
13401: LIST
13402: LIST
13403: LIST
13404: LIST
13405: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
13406: LD_ADDR_OWVAR 27
13410: PUSH
13411: LD_INT 1
13413: PPUSH
13414: LD_INT 2
13416: PPUSH
13417: CALL_OW 12
13421: ST_TO_ADDR
// hc_class = 3 ;
13422: LD_ADDR_OWVAR 28
13426: PUSH
13427: LD_INT 3
13429: ST_TO_ADDR
// un = CreateHuman ;
13430: LD_ADDR_VAR 0 5
13434: PUSH
13435: CALL_OW 44
13439: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru3fab ) ;
13440: LD_VAR 0 5
13444: PPUSH
13445: LD_EXP 74
13449: PPUSH
13450: CALL_OW 52
// l = l + 1 ;
13454: LD_ADDR_VAR 0 6
13458: PUSH
13459: LD_VAR 0 6
13463: PUSH
13464: LD_INT 1
13466: PLUS
13467: ST_TO_ADDR
// end until l = 6 ;
13468: LD_VAR 0 6
13472: PUSH
13473: LD_INT 6
13475: EQUAL
13476: IFFALSE 13328
// end ; end ;
13478: GO 13302
13480: POP
13481: POP
// for i in ru3lab1 do
13482: LD_ADDR_VAR 0 3
13486: PUSH
13487: LD_EXP 72
13491: PUSH
13492: FOR_IN
13493: IFFALSE 13670
// begin l = 0 ;
13495: LD_ADDR_VAR 0 6
13499: PUSH
13500: LD_INT 0
13502: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
13503: LD_VAR 0 3
13507: PPUSH
13508: CALL_OW 310
13512: PUSH
13513: LD_INT 0
13515: EQUAL
13516: IFFALSE 13668
// begin repeat begin hc_gallery =  ;
13518: LD_ADDR_OWVAR 33
13522: PUSH
13523: LD_STRING 
13525: ST_TO_ADDR
// hc_name =  ;
13526: LD_ADDR_OWVAR 26
13530: PUSH
13531: LD_STRING 
13533: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
13534: LD_ADDR_OWVAR 29
13538: PUSH
13539: LD_INT 9
13541: PPUSH
13542: LD_INT 11
13544: PPUSH
13545: CALL_OW 12
13549: PUSH
13550: LD_INT 10
13552: PPUSH
13553: LD_INT 12
13555: PPUSH
13556: CALL_OW 12
13560: PUSH
13561: EMPTY
13562: LIST
13563: LIST
13564: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
13565: LD_ADDR_OWVAR 31
13569: PUSH
13570: LD_VAR 0 4
13574: PUSH
13575: LD_VAR 0 4
13579: PUSH
13580: LD_VAR 0 4
13584: PUSH
13585: LD_VAR 0 4
13589: PUSH
13590: EMPTY
13591: LIST
13592: LIST
13593: LIST
13594: LIST
13595: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
13596: LD_ADDR_OWVAR 27
13600: PUSH
13601: LD_INT 1
13603: PPUSH
13604: LD_INT 2
13606: PPUSH
13607: CALL_OW 12
13611: ST_TO_ADDR
// hc_class = 4 ;
13612: LD_ADDR_OWVAR 28
13616: PUSH
13617: LD_INT 4
13619: ST_TO_ADDR
// un = CreateHuman ;
13620: LD_ADDR_VAR 0 5
13624: PUSH
13625: CALL_OW 44
13629: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru3lab1 ) ;
13630: LD_VAR 0 5
13634: PPUSH
13635: LD_EXP 72
13639: PPUSH
13640: CALL_OW 52
// l = l + 1 ;
13644: LD_ADDR_VAR 0 6
13648: PUSH
13649: LD_VAR 0 6
13653: PUSH
13654: LD_INT 1
13656: PLUS
13657: ST_TO_ADDR
// end until l = 4 ;
13658: LD_VAR 0 6
13662: PUSH
13663: LD_INT 4
13665: EQUAL
13666: IFFALSE 13518
// end ; end ;
13668: GO 13492
13670: POP
13671: POP
// for i in ru3lab2 do
13672: LD_ADDR_VAR 0 3
13676: PUSH
13677: LD_EXP 73
13681: PUSH
13682: FOR_IN
13683: IFFALSE 13860
// begin l = 0 ;
13685: LD_ADDR_VAR 0 6
13689: PUSH
13690: LD_INT 0
13692: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
13693: LD_VAR 0 3
13697: PPUSH
13698: CALL_OW 310
13702: PUSH
13703: LD_INT 0
13705: EQUAL
13706: IFFALSE 13858
// begin repeat begin hc_gallery =  ;
13708: LD_ADDR_OWVAR 33
13712: PUSH
13713: LD_STRING 
13715: ST_TO_ADDR
// hc_name =  ;
13716: LD_ADDR_OWVAR 26
13720: PUSH
13721: LD_STRING 
13723: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
13724: LD_ADDR_OWVAR 29
13728: PUSH
13729: LD_INT 9
13731: PPUSH
13732: LD_INT 11
13734: PPUSH
13735: CALL_OW 12
13739: PUSH
13740: LD_INT 10
13742: PPUSH
13743: LD_INT 12
13745: PPUSH
13746: CALL_OW 12
13750: PUSH
13751: EMPTY
13752: LIST
13753: LIST
13754: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
13755: LD_ADDR_OWVAR 31
13759: PUSH
13760: LD_VAR 0 4
13764: PUSH
13765: LD_VAR 0 4
13769: PUSH
13770: LD_VAR 0 4
13774: PUSH
13775: LD_VAR 0 4
13779: PUSH
13780: EMPTY
13781: LIST
13782: LIST
13783: LIST
13784: LIST
13785: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
13786: LD_ADDR_OWVAR 27
13790: PUSH
13791: LD_INT 1
13793: PPUSH
13794: LD_INT 2
13796: PPUSH
13797: CALL_OW 12
13801: ST_TO_ADDR
// hc_class = 4 ;
13802: LD_ADDR_OWVAR 28
13806: PUSH
13807: LD_INT 4
13809: ST_TO_ADDR
// un = CreateHuman ;
13810: LD_ADDR_VAR 0 5
13814: PUSH
13815: CALL_OW 44
13819: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru3lab2 ) ;
13820: LD_VAR 0 5
13824: PPUSH
13825: LD_EXP 73
13829: PPUSH
13830: CALL_OW 52
// l = l + 1 ;
13834: LD_ADDR_VAR 0 6
13838: PUSH
13839: LD_VAR 0 6
13843: PUSH
13844: LD_INT 1
13846: PLUS
13847: ST_TO_ADDR
// end until l = 4 ;
13848: LD_VAR 0 6
13852: PUSH
13853: LD_INT 4
13855: EQUAL
13856: IFFALSE 13708
// end ; end ;
13858: GO 13682
13860: POP
13861: POP
// end ;
13862: LD_VAR 0 1
13866: RET
// export function PrepareRussian4People ; var RU_turret , i , level , un , l ; begin
13867: LD_INT 0
13869: PPUSH
13870: PPUSH
13871: PPUSH
13872: PPUSH
13873: PPUSH
13874: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_btype , b_bunker ] ] ) ;
13875: LD_ADDR_VAR 0 2
13879: PUSH
13880: LD_INT 22
13882: PUSH
13883: LD_EXP 58
13887: PUSH
13888: EMPTY
13889: LIST
13890: LIST
13891: PUSH
13892: LD_INT 30
13894: PUSH
13895: LD_INT 32
13897: PUSH
13898: EMPTY
13899: LIST
13900: LIST
13901: PUSH
13902: EMPTY
13903: LIST
13904: LIST
13905: PPUSH
13906: CALL_OW 69
13910: ST_TO_ADDR
// uc_side = cpu4 ;
13911: LD_ADDR_OWVAR 20
13915: PUSH
13916: LD_EXP 58
13920: ST_TO_ADDR
// uc_nation = 3 ;
13921: LD_ADDR_OWVAR 21
13925: PUSH
13926: LD_INT 3
13928: ST_TO_ADDR
// Level = difficultyC ;
13929: LD_ADDR_VAR 0 4
13933: PUSH
13934: LD_EXP 25
13938: ST_TO_ADDR
// hc_gallery =  ;
13939: LD_ADDR_OWVAR 33
13943: PUSH
13944: LD_STRING 
13946: ST_TO_ADDR
// hc_name =  ;
13947: LD_ADDR_OWVAR 26
13951: PUSH
13952: LD_STRING 
13954: ST_TO_ADDR
// for i in RU_Turret do
13955: LD_ADDR_VAR 0 3
13959: PUSH
13960: LD_VAR 0 2
13964: PUSH
13965: FOR_IN
13966: IFFALSE 14095
// begin if IsInUnit ( i ) = 0 then
13968: LD_VAR 0 3
13972: PPUSH
13973: CALL_OW 310
13977: PUSH
13978: LD_INT 0
13980: EQUAL
13981: IFFALSE 14093
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
13983: LD_ADDR_OWVAR 29
13987: PUSH
13988: LD_INT 9
13990: PPUSH
13991: LD_INT 11
13993: PPUSH
13994: CALL_OW 12
13998: PUSH
13999: LD_INT 10
14001: PPUSH
14002: LD_INT 12
14004: PPUSH
14005: CALL_OW 12
14009: PUSH
14010: EMPTY
14011: LIST
14012: LIST
14013: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
14014: LD_ADDR_OWVAR 31
14018: PUSH
14019: LD_VAR 0 4
14023: PUSH
14024: LD_VAR 0 4
14028: PUSH
14029: LD_VAR 0 4
14033: PUSH
14034: LD_VAR 0 4
14038: PUSH
14039: EMPTY
14040: LIST
14041: LIST
14042: LIST
14043: LIST
14044: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
14045: LD_ADDR_OWVAR 27
14049: PUSH
14050: LD_INT 1
14052: PPUSH
14053: LD_INT 2
14055: PPUSH
14056: CALL_OW 12
14060: ST_TO_ADDR
// hc_class = 1 ;
14061: LD_ADDR_OWVAR 28
14065: PUSH
14066: LD_INT 1
14068: ST_TO_ADDR
// un := CreateHuman ;
14069: LD_ADDR_VAR 0 5
14073: PUSH
14074: CALL_OW 44
14078: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
14079: LD_VAR 0 5
14083: PPUSH
14084: LD_VAR 0 3
14088: PPUSH
14089: CALL_OW 52
// end ; end ;
14093: GO 13965
14095: POP
14096: POP
// for i in ru4depo do
14097: LD_ADDR_VAR 0 3
14101: PUSH
14102: LD_EXP 76
14106: PUSH
14107: FOR_IN
14108: IFFALSE 14285
// begin l = 0 ;
14110: LD_ADDR_VAR 0 6
14114: PUSH
14115: LD_INT 0
14117: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
14118: LD_VAR 0 3
14122: PPUSH
14123: CALL_OW 310
14127: PUSH
14128: LD_INT 0
14130: EQUAL
14131: IFFALSE 14283
// begin repeat begin hc_gallery =  ;
14133: LD_ADDR_OWVAR 33
14137: PUSH
14138: LD_STRING 
14140: ST_TO_ADDR
// hc_name =  ;
14141: LD_ADDR_OWVAR 26
14145: PUSH
14146: LD_STRING 
14148: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
14149: LD_ADDR_OWVAR 29
14153: PUSH
14154: LD_INT 9
14156: PPUSH
14157: LD_INT 11
14159: PPUSH
14160: CALL_OW 12
14164: PUSH
14165: LD_INT 10
14167: PPUSH
14168: LD_INT 12
14170: PPUSH
14171: CALL_OW 12
14175: PUSH
14176: EMPTY
14177: LIST
14178: LIST
14179: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
14180: LD_ADDR_OWVAR 31
14184: PUSH
14185: LD_VAR 0 4
14189: PUSH
14190: LD_VAR 0 4
14194: PUSH
14195: LD_VAR 0 4
14199: PUSH
14200: LD_VAR 0 4
14204: PUSH
14205: EMPTY
14206: LIST
14207: LIST
14208: LIST
14209: LIST
14210: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
14211: LD_ADDR_OWVAR 27
14215: PUSH
14216: LD_INT 1
14218: PPUSH
14219: LD_INT 2
14221: PPUSH
14222: CALL_OW 12
14226: ST_TO_ADDR
// hc_class = 2 ;
14227: LD_ADDR_OWVAR 28
14231: PUSH
14232: LD_INT 2
14234: ST_TO_ADDR
// un = CreateHuman ;
14235: LD_ADDR_VAR 0 5
14239: PUSH
14240: CALL_OW 44
14244: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru4depo ) ;
14245: LD_VAR 0 5
14249: PPUSH
14250: LD_EXP 76
14254: PPUSH
14255: CALL_OW 52
// l = l + 1 ;
14259: LD_ADDR_VAR 0 6
14263: PUSH
14264: LD_VAR 0 6
14268: PUSH
14269: LD_INT 1
14271: PLUS
14272: ST_TO_ADDR
// end until l = 4 ;
14273: LD_VAR 0 6
14277: PUSH
14278: LD_INT 4
14280: EQUAL
14281: IFFALSE 14133
// end ; end ;
14283: GO 14107
14285: POP
14286: POP
// for i in ru4armoury do
14287: LD_ADDR_VAR 0 3
14291: PUSH
14292: LD_EXP 80
14296: PUSH
14297: FOR_IN
14298: IFFALSE 14475
// begin l = 0 ;
14300: LD_ADDR_VAR 0 6
14304: PUSH
14305: LD_INT 0
14307: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
14308: LD_VAR 0 3
14312: PPUSH
14313: CALL_OW 310
14317: PUSH
14318: LD_INT 0
14320: EQUAL
14321: IFFALSE 14473
// begin repeat begin hc_gallery =  ;
14323: LD_ADDR_OWVAR 33
14327: PUSH
14328: LD_STRING 
14330: ST_TO_ADDR
// hc_name =  ;
14331: LD_ADDR_OWVAR 26
14335: PUSH
14336: LD_STRING 
14338: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
14339: LD_ADDR_OWVAR 29
14343: PUSH
14344: LD_INT 9
14346: PPUSH
14347: LD_INT 11
14349: PPUSH
14350: CALL_OW 12
14354: PUSH
14355: LD_INT 10
14357: PPUSH
14358: LD_INT 12
14360: PPUSH
14361: CALL_OW 12
14365: PUSH
14366: EMPTY
14367: LIST
14368: LIST
14369: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
14370: LD_ADDR_OWVAR 31
14374: PUSH
14375: LD_VAR 0 4
14379: PUSH
14380: LD_VAR 0 4
14384: PUSH
14385: LD_VAR 0 4
14389: PUSH
14390: LD_VAR 0 4
14394: PUSH
14395: EMPTY
14396: LIST
14397: LIST
14398: LIST
14399: LIST
14400: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
14401: LD_ADDR_OWVAR 27
14405: PUSH
14406: LD_INT 1
14408: PPUSH
14409: LD_INT 2
14411: PPUSH
14412: CALL_OW 12
14416: ST_TO_ADDR
// hc_class = 9 ;
14417: LD_ADDR_OWVAR 28
14421: PUSH
14422: LD_INT 9
14424: ST_TO_ADDR
// un = CreateHuman ;
14425: LD_ADDR_VAR 0 5
14429: PUSH
14430: CALL_OW 44
14434: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru4armoury ) ;
14435: LD_VAR 0 5
14439: PPUSH
14440: LD_EXP 80
14444: PPUSH
14445: CALL_OW 52
// l = l + 1 ;
14449: LD_ADDR_VAR 0 6
14453: PUSH
14454: LD_VAR 0 6
14458: PUSH
14459: LD_INT 1
14461: PLUS
14462: ST_TO_ADDR
// end until l = 2 ;
14463: LD_VAR 0 6
14467: PUSH
14468: LD_INT 2
14470: EQUAL
14471: IFFALSE 14323
// end ; end ;
14473: GO 14297
14475: POP
14476: POP
// for i in ru4fab do
14477: LD_ADDR_VAR 0 3
14481: PUSH
14482: LD_EXP 79
14486: PUSH
14487: FOR_IN
14488: IFFALSE 14665
// begin l = 0 ;
14490: LD_ADDR_VAR 0 6
14494: PUSH
14495: LD_INT 0
14497: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
14498: LD_VAR 0 3
14502: PPUSH
14503: CALL_OW 310
14507: PUSH
14508: LD_INT 0
14510: EQUAL
14511: IFFALSE 14663
// begin repeat begin hc_gallery =  ;
14513: LD_ADDR_OWVAR 33
14517: PUSH
14518: LD_STRING 
14520: ST_TO_ADDR
// hc_name =  ;
14521: LD_ADDR_OWVAR 26
14525: PUSH
14526: LD_STRING 
14528: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
14529: LD_ADDR_OWVAR 29
14533: PUSH
14534: LD_INT 9
14536: PPUSH
14537: LD_INT 11
14539: PPUSH
14540: CALL_OW 12
14544: PUSH
14545: LD_INT 10
14547: PPUSH
14548: LD_INT 12
14550: PPUSH
14551: CALL_OW 12
14555: PUSH
14556: EMPTY
14557: LIST
14558: LIST
14559: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
14560: LD_ADDR_OWVAR 31
14564: PUSH
14565: LD_VAR 0 4
14569: PUSH
14570: LD_VAR 0 4
14574: PUSH
14575: LD_VAR 0 4
14579: PUSH
14580: LD_VAR 0 4
14584: PUSH
14585: EMPTY
14586: LIST
14587: LIST
14588: LIST
14589: LIST
14590: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
14591: LD_ADDR_OWVAR 27
14595: PUSH
14596: LD_INT 1
14598: PPUSH
14599: LD_INT 2
14601: PPUSH
14602: CALL_OW 12
14606: ST_TO_ADDR
// hc_class = 3 ;
14607: LD_ADDR_OWVAR 28
14611: PUSH
14612: LD_INT 3
14614: ST_TO_ADDR
// un = CreateHuman ;
14615: LD_ADDR_VAR 0 5
14619: PUSH
14620: CALL_OW 44
14624: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru4fab ) ;
14625: LD_VAR 0 5
14629: PPUSH
14630: LD_EXP 79
14634: PPUSH
14635: CALL_OW 52
// l = l + 1 ;
14639: LD_ADDR_VAR 0 6
14643: PUSH
14644: LD_VAR 0 6
14648: PUSH
14649: LD_INT 1
14651: PLUS
14652: ST_TO_ADDR
// end until l = 6 ;
14653: LD_VAR 0 6
14657: PUSH
14658: LD_INT 6
14660: EQUAL
14661: IFFALSE 14513
// end ; end ;
14663: GO 14487
14665: POP
14666: POP
// for i in ru4lab1 do
14667: LD_ADDR_VAR 0 3
14671: PUSH
14672: LD_EXP 77
14676: PUSH
14677: FOR_IN
14678: IFFALSE 14855
// begin l = 0 ;
14680: LD_ADDR_VAR 0 6
14684: PUSH
14685: LD_INT 0
14687: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
14688: LD_VAR 0 3
14692: PPUSH
14693: CALL_OW 310
14697: PUSH
14698: LD_INT 0
14700: EQUAL
14701: IFFALSE 14853
// begin repeat begin hc_gallery =  ;
14703: LD_ADDR_OWVAR 33
14707: PUSH
14708: LD_STRING 
14710: ST_TO_ADDR
// hc_name =  ;
14711: LD_ADDR_OWVAR 26
14715: PUSH
14716: LD_STRING 
14718: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
14719: LD_ADDR_OWVAR 29
14723: PUSH
14724: LD_INT 9
14726: PPUSH
14727: LD_INT 11
14729: PPUSH
14730: CALL_OW 12
14734: PUSH
14735: LD_INT 10
14737: PPUSH
14738: LD_INT 12
14740: PPUSH
14741: CALL_OW 12
14745: PUSH
14746: EMPTY
14747: LIST
14748: LIST
14749: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
14750: LD_ADDR_OWVAR 31
14754: PUSH
14755: LD_VAR 0 4
14759: PUSH
14760: LD_VAR 0 4
14764: PUSH
14765: LD_VAR 0 4
14769: PUSH
14770: LD_VAR 0 4
14774: PUSH
14775: EMPTY
14776: LIST
14777: LIST
14778: LIST
14779: LIST
14780: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
14781: LD_ADDR_OWVAR 27
14785: PUSH
14786: LD_INT 1
14788: PPUSH
14789: LD_INT 2
14791: PPUSH
14792: CALL_OW 12
14796: ST_TO_ADDR
// hc_class = 4 ;
14797: LD_ADDR_OWVAR 28
14801: PUSH
14802: LD_INT 4
14804: ST_TO_ADDR
// un = CreateHuman ;
14805: LD_ADDR_VAR 0 5
14809: PUSH
14810: CALL_OW 44
14814: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru4lab1 ) ;
14815: LD_VAR 0 5
14819: PPUSH
14820: LD_EXP 77
14824: PPUSH
14825: CALL_OW 52
// l = l + 1 ;
14829: LD_ADDR_VAR 0 6
14833: PUSH
14834: LD_VAR 0 6
14838: PUSH
14839: LD_INT 1
14841: PLUS
14842: ST_TO_ADDR
// end until l = 4 ;
14843: LD_VAR 0 6
14847: PUSH
14848: LD_INT 4
14850: EQUAL
14851: IFFALSE 14703
// end ; end ;
14853: GO 14677
14855: POP
14856: POP
// for i in ru4lab2 do
14857: LD_ADDR_VAR 0 3
14861: PUSH
14862: LD_EXP 78
14866: PUSH
14867: FOR_IN
14868: IFFALSE 15045
// begin l = 0 ;
14870: LD_ADDR_VAR 0 6
14874: PUSH
14875: LD_INT 0
14877: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
14878: LD_VAR 0 3
14882: PPUSH
14883: CALL_OW 310
14887: PUSH
14888: LD_INT 0
14890: EQUAL
14891: IFFALSE 15043
// begin repeat begin hc_gallery =  ;
14893: LD_ADDR_OWVAR 33
14897: PUSH
14898: LD_STRING 
14900: ST_TO_ADDR
// hc_name =  ;
14901: LD_ADDR_OWVAR 26
14905: PUSH
14906: LD_STRING 
14908: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
14909: LD_ADDR_OWVAR 29
14913: PUSH
14914: LD_INT 9
14916: PPUSH
14917: LD_INT 11
14919: PPUSH
14920: CALL_OW 12
14924: PUSH
14925: LD_INT 10
14927: PPUSH
14928: LD_INT 12
14930: PPUSH
14931: CALL_OW 12
14935: PUSH
14936: EMPTY
14937: LIST
14938: LIST
14939: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
14940: LD_ADDR_OWVAR 31
14944: PUSH
14945: LD_VAR 0 4
14949: PUSH
14950: LD_VAR 0 4
14954: PUSH
14955: LD_VAR 0 4
14959: PUSH
14960: LD_VAR 0 4
14964: PUSH
14965: EMPTY
14966: LIST
14967: LIST
14968: LIST
14969: LIST
14970: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
14971: LD_ADDR_OWVAR 27
14975: PUSH
14976: LD_INT 1
14978: PPUSH
14979: LD_INT 2
14981: PPUSH
14982: CALL_OW 12
14986: ST_TO_ADDR
// hc_class = 4 ;
14987: LD_ADDR_OWVAR 28
14991: PUSH
14992: LD_INT 4
14994: ST_TO_ADDR
// un = CreateHuman ;
14995: LD_ADDR_VAR 0 5
14999: PUSH
15000: CALL_OW 44
15004: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru4lab2 ) ;
15005: LD_VAR 0 5
15009: PPUSH
15010: LD_EXP 78
15014: PPUSH
15015: CALL_OW 52
// l = l + 1 ;
15019: LD_ADDR_VAR 0 6
15023: PUSH
15024: LD_VAR 0 6
15028: PUSH
15029: LD_INT 1
15031: PLUS
15032: ST_TO_ADDR
// end until l = 4 ;
15033: LD_VAR 0 6
15037: PUSH
15038: LD_INT 4
15040: EQUAL
15041: IFFALSE 14893
// end ; end ;
15043: GO 14867
15045: POP
15046: POP
// end ;
15047: LD_VAR 0 1
15051: RET
// export function PrepareRussian5People ; var RU_turret , i , level , un , l ; begin
15052: LD_INT 0
15054: PPUSH
15055: PPUSH
15056: PPUSH
15057: PPUSH
15058: PPUSH
15059: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu5 ] , [ f_btype , b_bunker ] ] ) ;
15060: LD_ADDR_VAR 0 2
15064: PUSH
15065: LD_INT 22
15067: PUSH
15068: LD_EXP 59
15072: PUSH
15073: EMPTY
15074: LIST
15075: LIST
15076: PUSH
15077: LD_INT 30
15079: PUSH
15080: LD_INT 32
15082: PUSH
15083: EMPTY
15084: LIST
15085: LIST
15086: PUSH
15087: EMPTY
15088: LIST
15089: LIST
15090: PPUSH
15091: CALL_OW 69
15095: ST_TO_ADDR
// uc_side = cpu5 ;
15096: LD_ADDR_OWVAR 20
15100: PUSH
15101: LD_EXP 59
15105: ST_TO_ADDR
// uc_nation = 3 ;
15106: LD_ADDR_OWVAR 21
15110: PUSH
15111: LD_INT 3
15113: ST_TO_ADDR
// Level = difficultyC ;
15114: LD_ADDR_VAR 0 4
15118: PUSH
15119: LD_EXP 25
15123: ST_TO_ADDR
// hc_gallery =  ;
15124: LD_ADDR_OWVAR 33
15128: PUSH
15129: LD_STRING 
15131: ST_TO_ADDR
// hc_name =  ;
15132: LD_ADDR_OWVAR 26
15136: PUSH
15137: LD_STRING 
15139: ST_TO_ADDR
// for i in RU_Turret do
15140: LD_ADDR_VAR 0 3
15144: PUSH
15145: LD_VAR 0 2
15149: PUSH
15150: FOR_IN
15151: IFFALSE 15280
// begin if IsInUnit ( i ) = 0 then
15153: LD_VAR 0 3
15157: PPUSH
15158: CALL_OW 310
15162: PUSH
15163: LD_INT 0
15165: EQUAL
15166: IFFALSE 15278
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
15168: LD_ADDR_OWVAR 29
15172: PUSH
15173: LD_INT 9
15175: PPUSH
15176: LD_INT 11
15178: PPUSH
15179: CALL_OW 12
15183: PUSH
15184: LD_INT 10
15186: PPUSH
15187: LD_INT 12
15189: PPUSH
15190: CALL_OW 12
15194: PUSH
15195: EMPTY
15196: LIST
15197: LIST
15198: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
15199: LD_ADDR_OWVAR 31
15203: PUSH
15204: LD_VAR 0 4
15208: PUSH
15209: LD_VAR 0 4
15213: PUSH
15214: LD_VAR 0 4
15218: PUSH
15219: LD_VAR 0 4
15223: PUSH
15224: EMPTY
15225: LIST
15226: LIST
15227: LIST
15228: LIST
15229: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
15230: LD_ADDR_OWVAR 27
15234: PUSH
15235: LD_INT 1
15237: PPUSH
15238: LD_INT 2
15240: PPUSH
15241: CALL_OW 12
15245: ST_TO_ADDR
// hc_class = 1 ;
15246: LD_ADDR_OWVAR 28
15250: PUSH
15251: LD_INT 1
15253: ST_TO_ADDR
// un := CreateHuman ;
15254: LD_ADDR_VAR 0 5
15258: PUSH
15259: CALL_OW 44
15263: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
15264: LD_VAR 0 5
15268: PPUSH
15269: LD_VAR 0 3
15273: PPUSH
15274: CALL_OW 52
// end ; end ;
15278: GO 15150
15280: POP
15281: POP
// for i in ru5depo do
15282: LD_ADDR_VAR 0 3
15286: PUSH
15287: LD_EXP 81
15291: PUSH
15292: FOR_IN
15293: IFFALSE 15470
// begin l = 0 ;
15295: LD_ADDR_VAR 0 6
15299: PUSH
15300: LD_INT 0
15302: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
15303: LD_VAR 0 3
15307: PPUSH
15308: CALL_OW 310
15312: PUSH
15313: LD_INT 0
15315: EQUAL
15316: IFFALSE 15468
// begin repeat begin hc_gallery =  ;
15318: LD_ADDR_OWVAR 33
15322: PUSH
15323: LD_STRING 
15325: ST_TO_ADDR
// hc_name =  ;
15326: LD_ADDR_OWVAR 26
15330: PUSH
15331: LD_STRING 
15333: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
15334: LD_ADDR_OWVAR 29
15338: PUSH
15339: LD_INT 9
15341: PPUSH
15342: LD_INT 11
15344: PPUSH
15345: CALL_OW 12
15349: PUSH
15350: LD_INT 10
15352: PPUSH
15353: LD_INT 12
15355: PPUSH
15356: CALL_OW 12
15360: PUSH
15361: EMPTY
15362: LIST
15363: LIST
15364: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
15365: LD_ADDR_OWVAR 31
15369: PUSH
15370: LD_VAR 0 4
15374: PUSH
15375: LD_VAR 0 4
15379: PUSH
15380: LD_VAR 0 4
15384: PUSH
15385: LD_VAR 0 4
15389: PUSH
15390: EMPTY
15391: LIST
15392: LIST
15393: LIST
15394: LIST
15395: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
15396: LD_ADDR_OWVAR 27
15400: PUSH
15401: LD_INT 1
15403: PPUSH
15404: LD_INT 2
15406: PPUSH
15407: CALL_OW 12
15411: ST_TO_ADDR
// hc_class = 2 ;
15412: LD_ADDR_OWVAR 28
15416: PUSH
15417: LD_INT 2
15419: ST_TO_ADDR
// un = CreateHuman ;
15420: LD_ADDR_VAR 0 5
15424: PUSH
15425: CALL_OW 44
15429: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru5depo ) ;
15430: LD_VAR 0 5
15434: PPUSH
15435: LD_EXP 81
15439: PPUSH
15440: CALL_OW 52
// l = l + 1 ;
15444: LD_ADDR_VAR 0 6
15448: PUSH
15449: LD_VAR 0 6
15453: PUSH
15454: LD_INT 1
15456: PLUS
15457: ST_TO_ADDR
// end until l = 4 ;
15458: LD_VAR 0 6
15462: PUSH
15463: LD_INT 4
15465: EQUAL
15466: IFFALSE 15318
// end ; end ;
15468: GO 15292
15470: POP
15471: POP
// for i in ru5armoury do
15472: LD_ADDR_VAR 0 3
15476: PUSH
15477: LD_EXP 84
15481: PUSH
15482: FOR_IN
15483: IFFALSE 15660
// begin l = 0 ;
15485: LD_ADDR_VAR 0 6
15489: PUSH
15490: LD_INT 0
15492: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
15493: LD_VAR 0 3
15497: PPUSH
15498: CALL_OW 310
15502: PUSH
15503: LD_INT 0
15505: EQUAL
15506: IFFALSE 15658
// begin repeat begin hc_gallery =  ;
15508: LD_ADDR_OWVAR 33
15512: PUSH
15513: LD_STRING 
15515: ST_TO_ADDR
// hc_name =  ;
15516: LD_ADDR_OWVAR 26
15520: PUSH
15521: LD_STRING 
15523: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
15524: LD_ADDR_OWVAR 29
15528: PUSH
15529: LD_INT 9
15531: PPUSH
15532: LD_INT 11
15534: PPUSH
15535: CALL_OW 12
15539: PUSH
15540: LD_INT 10
15542: PPUSH
15543: LD_INT 12
15545: PPUSH
15546: CALL_OW 12
15550: PUSH
15551: EMPTY
15552: LIST
15553: LIST
15554: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
15555: LD_ADDR_OWVAR 31
15559: PUSH
15560: LD_VAR 0 4
15564: PUSH
15565: LD_VAR 0 4
15569: PUSH
15570: LD_VAR 0 4
15574: PUSH
15575: LD_VAR 0 4
15579: PUSH
15580: EMPTY
15581: LIST
15582: LIST
15583: LIST
15584: LIST
15585: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
15586: LD_ADDR_OWVAR 27
15590: PUSH
15591: LD_INT 1
15593: PPUSH
15594: LD_INT 2
15596: PPUSH
15597: CALL_OW 12
15601: ST_TO_ADDR
// hc_class = 9 ;
15602: LD_ADDR_OWVAR 28
15606: PUSH
15607: LD_INT 9
15609: ST_TO_ADDR
// un = CreateHuman ;
15610: LD_ADDR_VAR 0 5
15614: PUSH
15615: CALL_OW 44
15619: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru5armoury ) ;
15620: LD_VAR 0 5
15624: PPUSH
15625: LD_EXP 84
15629: PPUSH
15630: CALL_OW 52
// l = l + 1 ;
15634: LD_ADDR_VAR 0 6
15638: PUSH
15639: LD_VAR 0 6
15643: PUSH
15644: LD_INT 1
15646: PLUS
15647: ST_TO_ADDR
// end until l = 2 ;
15648: LD_VAR 0 6
15652: PUSH
15653: LD_INT 2
15655: EQUAL
15656: IFFALSE 15508
// end ; end ;
15658: GO 15482
15660: POP
15661: POP
// for i in ru5fab do
15662: LD_ADDR_VAR 0 3
15666: PUSH
15667: LD_EXP 83
15671: PUSH
15672: FOR_IN
15673: IFFALSE 15850
// begin l = 0 ;
15675: LD_ADDR_VAR 0 6
15679: PUSH
15680: LD_INT 0
15682: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
15683: LD_VAR 0 3
15687: PPUSH
15688: CALL_OW 310
15692: PUSH
15693: LD_INT 0
15695: EQUAL
15696: IFFALSE 15848
// begin repeat begin hc_gallery =  ;
15698: LD_ADDR_OWVAR 33
15702: PUSH
15703: LD_STRING 
15705: ST_TO_ADDR
// hc_name =  ;
15706: LD_ADDR_OWVAR 26
15710: PUSH
15711: LD_STRING 
15713: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
15714: LD_ADDR_OWVAR 29
15718: PUSH
15719: LD_INT 9
15721: PPUSH
15722: LD_INT 11
15724: PPUSH
15725: CALL_OW 12
15729: PUSH
15730: LD_INT 10
15732: PPUSH
15733: LD_INT 12
15735: PPUSH
15736: CALL_OW 12
15740: PUSH
15741: EMPTY
15742: LIST
15743: LIST
15744: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
15745: LD_ADDR_OWVAR 31
15749: PUSH
15750: LD_VAR 0 4
15754: PUSH
15755: LD_VAR 0 4
15759: PUSH
15760: LD_VAR 0 4
15764: PUSH
15765: LD_VAR 0 4
15769: PUSH
15770: EMPTY
15771: LIST
15772: LIST
15773: LIST
15774: LIST
15775: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
15776: LD_ADDR_OWVAR 27
15780: PUSH
15781: LD_INT 1
15783: PPUSH
15784: LD_INT 2
15786: PPUSH
15787: CALL_OW 12
15791: ST_TO_ADDR
// hc_class = 3 ;
15792: LD_ADDR_OWVAR 28
15796: PUSH
15797: LD_INT 3
15799: ST_TO_ADDR
// un = CreateHuman ;
15800: LD_ADDR_VAR 0 5
15804: PUSH
15805: CALL_OW 44
15809: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru5fab ) ;
15810: LD_VAR 0 5
15814: PPUSH
15815: LD_EXP 83
15819: PPUSH
15820: CALL_OW 52
// l = l + 1 ;
15824: LD_ADDR_VAR 0 6
15828: PUSH
15829: LD_VAR 0 6
15833: PUSH
15834: LD_INT 1
15836: PLUS
15837: ST_TO_ADDR
// end until l = 6 ;
15838: LD_VAR 0 6
15842: PUSH
15843: LD_INT 6
15845: EQUAL
15846: IFFALSE 15698
// end ; end ;
15848: GO 15672
15850: POP
15851: POP
// for i in ru5lab1 do
15852: LD_ADDR_VAR 0 3
15856: PUSH
15857: LD_EXP 82
15861: PUSH
15862: FOR_IN
15863: IFFALSE 16040
// begin l = 0 ;
15865: LD_ADDR_VAR 0 6
15869: PUSH
15870: LD_INT 0
15872: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
15873: LD_VAR 0 3
15877: PPUSH
15878: CALL_OW 310
15882: PUSH
15883: LD_INT 0
15885: EQUAL
15886: IFFALSE 16038
// begin repeat begin hc_gallery =  ;
15888: LD_ADDR_OWVAR 33
15892: PUSH
15893: LD_STRING 
15895: ST_TO_ADDR
// hc_name =  ;
15896: LD_ADDR_OWVAR 26
15900: PUSH
15901: LD_STRING 
15903: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
15904: LD_ADDR_OWVAR 29
15908: PUSH
15909: LD_INT 9
15911: PPUSH
15912: LD_INT 11
15914: PPUSH
15915: CALL_OW 12
15919: PUSH
15920: LD_INT 10
15922: PPUSH
15923: LD_INT 12
15925: PPUSH
15926: CALL_OW 12
15930: PUSH
15931: EMPTY
15932: LIST
15933: LIST
15934: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
15935: LD_ADDR_OWVAR 31
15939: PUSH
15940: LD_VAR 0 4
15944: PUSH
15945: LD_VAR 0 4
15949: PUSH
15950: LD_VAR 0 4
15954: PUSH
15955: LD_VAR 0 4
15959: PUSH
15960: EMPTY
15961: LIST
15962: LIST
15963: LIST
15964: LIST
15965: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
15966: LD_ADDR_OWVAR 27
15970: PUSH
15971: LD_INT 1
15973: PPUSH
15974: LD_INT 2
15976: PPUSH
15977: CALL_OW 12
15981: ST_TO_ADDR
// hc_class = 4 ;
15982: LD_ADDR_OWVAR 28
15986: PUSH
15987: LD_INT 4
15989: ST_TO_ADDR
// un = CreateHuman ;
15990: LD_ADDR_VAR 0 5
15994: PUSH
15995: CALL_OW 44
15999: ST_TO_ADDR
// PlaceHumanInUnit ( un , ru5lab1 ) ;
16000: LD_VAR 0 5
16004: PPUSH
16005: LD_EXP 82
16009: PPUSH
16010: CALL_OW 52
// l = l + 1 ;
16014: LD_ADDR_VAR 0 6
16018: PUSH
16019: LD_VAR 0 6
16023: PUSH
16024: LD_INT 1
16026: PLUS
16027: ST_TO_ADDR
// end until l = 4 ;
16028: LD_VAR 0 6
16032: PUSH
16033: LD_INT 4
16035: EQUAL
16036: IFFALSE 15888
// end ; end ;
16038: GO 15862
16040: POP
16041: POP
// end ; end_of_file
16042: LD_VAR 0 1
16046: RET
// every 0 0$3 trigger Russian1AI = 1 do
16047: LD_EXP 20
16051: PUSH
16052: LD_INT 1
16054: EQUAL
16055: IFFALSE 16072
16057: GO 16059
16059: DISABLE
// begin wait ( 0 0$1 ) ;
16060: LD_INT 35
16062: PPUSH
16063: CALL_OW 67
// enable ;
16067: ENABLE
// RepairBuildingRussian1 ;
16068: CALL 16073 0 0
// end ;
16072: END
// export DestroyRepairRU ; export function RepairBuildingRussian1 ; var enginer_list , scientist_list , buildings , i , un ; begin
16073: LD_INT 0
16075: PPUSH
16076: PPUSH
16077: PPUSH
16078: PPUSH
16079: PPUSH
16080: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 2 ] ] ) ;
16081: LD_ADDR_VAR 0 2
16085: PUSH
16086: LD_INT 22
16088: PUSH
16089: LD_EXP 55
16093: PUSH
16094: EMPTY
16095: LIST
16096: LIST
16097: PUSH
16098: LD_INT 25
16100: PUSH
16101: LD_INT 2
16103: PUSH
16104: EMPTY
16105: LIST
16106: LIST
16107: PUSH
16108: EMPTY
16109: LIST
16110: LIST
16111: PPUSH
16112: CALL_OW 69
16116: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 4 ] ] ) ;
16117: LD_ADDR_VAR 0 3
16121: PUSH
16122: LD_INT 22
16124: PUSH
16125: LD_EXP 55
16129: PUSH
16130: EMPTY
16131: LIST
16132: LIST
16133: PUSH
16134: LD_INT 25
16136: PUSH
16137: LD_INT 4
16139: PUSH
16140: EMPTY
16141: LIST
16142: LIST
16143: PUSH
16144: EMPTY
16145: LIST
16146: LIST
16147: PPUSH
16148: CALL_OW 69
16152: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu1 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
16153: LD_ADDR_VAR 0 4
16157: PUSH
16158: LD_INT 22
16160: PUSH
16161: LD_EXP 55
16165: PUSH
16166: EMPTY
16167: LIST
16168: LIST
16169: PUSH
16170: LD_INT 21
16172: PUSH
16173: LD_INT 3
16175: PUSH
16176: EMPTY
16177: LIST
16178: LIST
16179: PUSH
16180: LD_INT 3
16182: PUSH
16183: LD_INT 24
16185: PUSH
16186: LD_INT 1000
16188: PUSH
16189: EMPTY
16190: LIST
16191: LIST
16192: PUSH
16193: EMPTY
16194: LIST
16195: LIST
16196: PUSH
16197: EMPTY
16198: LIST
16199: LIST
16200: LIST
16201: PUSH
16202: EMPTY
16203: LIST
16204: PPUSH
16205: CALL_OW 69
16209: ST_TO_ADDR
// DestroyRepairRU = 0 ;
16210: LD_ADDR_EXP 85
16214: PUSH
16215: LD_INT 0
16217: ST_TO_ADDR
// if buildings > 0 then
16218: LD_VAR 0 4
16222: PUSH
16223: LD_INT 0
16225: GREATER
16226: IFFALSE 16361
// begin for i = 1 to enginer_list do
16228: LD_ADDR_VAR 0 5
16232: PUSH
16233: DOUBLE
16234: LD_INT 1
16236: DEC
16237: ST_TO_ADDR
16238: LD_VAR 0 2
16242: PUSH
16243: FOR_TO
16244: IFFALSE 16359
// begin ComExitBuilding ( enginer_list [ i ] ) ;
16246: LD_VAR 0 2
16250: PUSH
16251: LD_VAR 0 5
16255: ARRAY
16256: PPUSH
16257: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
16261: LD_VAR 0 2
16265: PUSH
16266: LD_VAR 0 5
16270: ARRAY
16271: PPUSH
16272: LD_VAR 0 4
16276: PUSH
16277: LD_INT 1
16279: ARRAY
16280: PPUSH
16281: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
16285: LD_VAR 0 2
16289: PUSH
16290: LD_VAR 0 5
16294: ARRAY
16295: PPUSH
16296: CALL_OW 256
16300: PUSH
16301: LD_INT 800
16303: LESS
16304: IFFALSE 16339
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
16306: LD_VAR 0 3
16310: PUSH
16311: LD_INT 1
16313: ARRAY
16314: PPUSH
16315: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Ru1HealZone ) ;
16319: LD_VAR 0 2
16323: PUSH
16324: LD_VAR 0 5
16328: ARRAY
16329: PPUSH
16330: LD_INT 6
16332: PPUSH
16333: CALL_OW 113
// end else
16337: GO 16357
// ComEnterUnit ( scientist_list [ 1 ] , ru1lab1 ) ;
16339: LD_VAR 0 3
16343: PUSH
16344: LD_INT 1
16346: ARRAY
16347: PPUSH
16348: LD_EXP 62
16352: PPUSH
16353: CALL_OW 120
// end ;
16357: GO 16243
16359: POP
16360: POP
// end ; for i = 1 to enginer_list do
16361: LD_ADDR_VAR 0 5
16365: PUSH
16366: DOUBLE
16367: LD_INT 1
16369: DEC
16370: ST_TO_ADDR
16371: LD_VAR 0 2
16375: PUSH
16376: FOR_TO
16377: IFFALSE 16538
// begin wait ( 0 0$3 ) ;
16379: LD_INT 105
16381: PPUSH
16382: CALL_OW 67
// if buildings = 0 and DestroyRepairRU = 0 then
16386: LD_VAR 0 4
16390: PUSH
16391: LD_INT 0
16393: EQUAL
16394: PUSH
16395: LD_EXP 85
16399: PUSH
16400: LD_INT 0
16402: EQUAL
16403: AND
16404: IFFALSE 16428
// begin ComEnterUnit ( enginer_list [ i ] , ru1depo ) ;
16406: LD_VAR 0 2
16410: PUSH
16411: LD_VAR 0 5
16415: ARRAY
16416: PPUSH
16417: LD_EXP 61
16421: PPUSH
16422: CALL_OW 120
// end else
16426: GO 16443
// begin ComExitBuilding ( enginer_list [ i ] ) ;
16428: LD_VAR 0 2
16432: PUSH
16433: LD_VAR 0 5
16437: ARRAY
16438: PPUSH
16439: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
16443: LD_VAR 0 2
16447: PUSH
16448: LD_VAR 0 5
16452: ARRAY
16453: PPUSH
16454: CALL_OW 256
16458: PUSH
16459: LD_INT 1000
16461: LESS
16462: IFFALSE 16497
// begin ComMoveToArea ( enginer_List [ i ] , Ru1HealZone ) ;
16464: LD_VAR 0 2
16468: PUSH
16469: LD_VAR 0 5
16473: ARRAY
16474: PPUSH
16475: LD_INT 6
16477: PPUSH
16478: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
16482: LD_VAR 0 3
16486: PUSH
16487: LD_INT 1
16489: ARRAY
16490: PPUSH
16491: CALL_OW 122
// end else
16495: GO 16536
// if GetLives ( enginer_list [ i ] ) = 1000 then
16497: LD_VAR 0 2
16501: PUSH
16502: LD_VAR 0 5
16506: ARRAY
16507: PPUSH
16508: CALL_OW 256
16512: PUSH
16513: LD_INT 1000
16515: EQUAL
16516: IFFALSE 16536
// begin ComEnterUnit ( scientist_list [ 1 ] , ru1lab1 ) ;
16518: LD_VAR 0 3
16522: PUSH
16523: LD_INT 1
16525: ARRAY
16526: PPUSH
16527: LD_EXP 62
16531: PPUSH
16532: CALL_OW 120
// end ; end ;
16536: GO 16376
16538: POP
16539: POP
// end ;
16540: LD_VAR 0 1
16544: RET
// every 0 0$1 trigger Russian1AI = 1 do var i , l ;
16545: LD_EXP 20
16549: PUSH
16550: LD_INT 1
16552: EQUAL
16553: IFFALSE 16630
16555: GO 16557
16557: DISABLE
16558: LD_INT 0
16560: PPUSH
16561: PPUSH
// begin enable ;
16562: ENABLE
// for i in FilterUnitsInArea ( Ru1Base , [ [ f_class , 1 ] , [ f_side , cpu1 ] ] ) do
16563: LD_ADDR_VAR 0 1
16567: PUSH
16568: LD_INT 7
16570: PPUSH
16571: LD_INT 25
16573: PUSH
16574: LD_INT 1
16576: PUSH
16577: EMPTY
16578: LIST
16579: LIST
16580: PUSH
16581: LD_INT 22
16583: PUSH
16584: LD_EXP 55
16588: PUSH
16589: EMPTY
16590: LIST
16591: LIST
16592: PUSH
16593: EMPTY
16594: LIST
16595: LIST
16596: PPUSH
16597: CALL_OW 70
16601: PUSH
16602: FOR_IN
16603: IFFALSE 16628
// begin wait ( 0 0$2 ) ;
16605: LD_INT 70
16607: PPUSH
16608: CALL_OW 67
// ComEnterUnit ( i , ru1armoury ) ;
16612: LD_VAR 0 1
16616: PPUSH
16617: LD_EXP 65
16621: PPUSH
16622: CALL_OW 120
// end ;
16626: GO 16602
16628: POP
16629: POP
// end ;
16630: PPOPN 2
16632: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 0 do
16633: LD_INT 22
16635: PUSH
16636: LD_EXP 55
16640: PUSH
16641: EMPTY
16642: LIST
16643: LIST
16644: PUSH
16645: LD_INT 21
16647: PUSH
16648: LD_INT 2
16650: PUSH
16651: EMPTY
16652: LIST
16653: LIST
16654: PUSH
16655: EMPTY
16656: LIST
16657: LIST
16658: PPUSH
16659: CALL_OW 69
16663: PUSH
16664: LD_INT 0
16666: EQUAL
16667: IFFALSE 16841
16669: GO 16671
16671: DISABLE
// begin enable ;
16672: ENABLE
// AddComConstruct ( ru1fab , 22 , 3 , 3 , 44 ) ;
16673: LD_EXP 64
16677: PPUSH
16678: LD_INT 22
16680: PPUSH
16681: LD_INT 3
16683: PPUSH
16684: LD_INT 3
16686: PPUSH
16687: LD_INT 44
16689: PPUSH
16690: CALL_OW 185
// AddComConstruct ( ru1fab , 22 , 3 , 3 , 44 ) ;
16694: LD_EXP 64
16698: PPUSH
16699: LD_INT 22
16701: PPUSH
16702: LD_INT 3
16704: PPUSH
16705: LD_INT 3
16707: PPUSH
16708: LD_INT 44
16710: PPUSH
16711: CALL_OW 185
// AddComConstruct ( ru1fab , 22 , 3 , 3 , 43 ) ;
16715: LD_EXP 64
16719: PPUSH
16720: LD_INT 22
16722: PPUSH
16723: LD_INT 3
16725: PPUSH
16726: LD_INT 3
16728: PPUSH
16729: LD_INT 43
16731: PPUSH
16732: CALL_OW 185
// AddComConstruct ( ru1fab , 22 , 3 , 3 , 43 ) ;
16736: LD_EXP 64
16740: PPUSH
16741: LD_INT 22
16743: PPUSH
16744: LD_INT 3
16746: PPUSH
16747: LD_INT 3
16749: PPUSH
16750: LD_INT 43
16752: PPUSH
16753: CALL_OW 185
// AddComConstruct ( ru1fab , 24 , 3 , 3 , 46 ) ;
16757: LD_EXP 64
16761: PPUSH
16762: LD_INT 24
16764: PPUSH
16765: LD_INT 3
16767: PPUSH
16768: LD_INT 3
16770: PPUSH
16771: LD_INT 46
16773: PPUSH
16774: CALL_OW 185
// AddComConstruct ( ru1fab , 24 , 3 , 3 , 46 ) ;
16778: LD_EXP 64
16782: PPUSH
16783: LD_INT 24
16785: PPUSH
16786: LD_INT 3
16788: PPUSH
16789: LD_INT 3
16791: PPUSH
16792: LD_INT 46
16794: PPUSH
16795: CALL_OW 185
// AddComConstruct ( ru1fab , 24 , 3 , 3 , 47 ) ;
16799: LD_EXP 64
16803: PPUSH
16804: LD_INT 24
16806: PPUSH
16807: LD_INT 3
16809: PPUSH
16810: LD_INT 3
16812: PPUSH
16813: LD_INT 47
16815: PPUSH
16816: CALL_OW 185
// AddComConstruct ( ru1fab , 24 , 3 , 3 , 47 ) ;
16820: LD_EXP 64
16824: PPUSH
16825: LD_INT 24
16827: PPUSH
16828: LD_INT 3
16830: PPUSH
16831: LD_INT 3
16833: PPUSH
16834: LD_INT 47
16836: PPUSH
16837: CALL_OW 185
// end ;
16841: END
// every 1 1$0 trigger Russian1AI = 1 and FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) >= 8 do var tactic , i ;
16842: LD_EXP 20
16846: PUSH
16847: LD_INT 1
16849: EQUAL
16850: PUSH
16851: LD_INT 22
16853: PUSH
16854: LD_EXP 55
16858: PUSH
16859: EMPTY
16860: LIST
16861: LIST
16862: PUSH
16863: LD_INT 21
16865: PUSH
16866: LD_INT 2
16868: PUSH
16869: EMPTY
16870: LIST
16871: LIST
16872: PUSH
16873: EMPTY
16874: LIST
16875: LIST
16876: PPUSH
16877: CALL_OW 69
16881: PUSH
16882: LD_INT 8
16884: GREATEREQUAL
16885: AND
16886: IFFALSE 17130
16888: GO 16890
16890: DISABLE
16891: LD_INT 0
16893: PPUSH
16894: PPUSH
// begin enable ;
16895: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
16896: LD_ADDR_VAR 0 1
16900: PUSH
16901: LD_INT 1
16903: PPUSH
16904: LD_INT 2
16906: PPUSH
16907: CALL_OW 12
16911: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
16912: LD_ADDR_VAR 0 2
16916: PUSH
16917: LD_INT 22
16919: PUSH
16920: LD_EXP 55
16924: PUSH
16925: EMPTY
16926: LIST
16927: LIST
16928: PUSH
16929: LD_INT 21
16931: PUSH
16932: LD_INT 2
16934: PUSH
16935: EMPTY
16936: LIST
16937: LIST
16938: PUSH
16939: LD_INT 24
16941: PUSH
16942: LD_INT 1000
16944: PUSH
16945: EMPTY
16946: LIST
16947: LIST
16948: PUSH
16949: EMPTY
16950: LIST
16951: LIST
16952: LIST
16953: PPUSH
16954: CALL_OW 69
16958: PUSH
16959: FOR_IN
16960: IFFALSE 17128
// begin if Tactic = 1 then
16962: LD_VAR 0 1
16966: PUSH
16967: LD_INT 1
16969: EQUAL
16970: IFFALSE 17044
// begin AddComAgressiveMove ( [ i ] , 95 , 19 ) ;
16972: LD_VAR 0 2
16976: PUSH
16977: EMPTY
16978: LIST
16979: PPUSH
16980: LD_INT 95
16982: PPUSH
16983: LD_INT 19
16985: PPUSH
16986: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 183 , 84 ) ;
16990: LD_VAR 0 2
16994: PUSH
16995: EMPTY
16996: LIST
16997: PPUSH
16998: LD_INT 183
17000: PPUSH
17001: LD_INT 84
17003: PPUSH
17004: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 213 , 140 ) ;
17008: LD_VAR 0 2
17012: PUSH
17013: EMPTY
17014: LIST
17015: PPUSH
17016: LD_INT 213
17018: PPUSH
17019: LD_INT 140
17021: PPUSH
17022: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 79 , 129 ) ;
17026: LD_VAR 0 2
17030: PUSH
17031: EMPTY
17032: LIST
17033: PPUSH
17034: LD_INT 79
17036: PPUSH
17037: LD_INT 129
17039: PPUSH
17040: CALL_OW 174
// end ; if Tactic = 2 then
17044: LD_VAR 0 1
17048: PUSH
17049: LD_INT 2
17051: EQUAL
17052: IFFALSE 17126
// begin AddComAgressiveMove ( [ i ] , 79 , 129 ) ;
17054: LD_VAR 0 2
17058: PUSH
17059: EMPTY
17060: LIST
17061: PPUSH
17062: LD_INT 79
17064: PPUSH
17065: LD_INT 129
17067: PPUSH
17068: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 213 , 140 ) ;
17072: LD_VAR 0 2
17076: PUSH
17077: EMPTY
17078: LIST
17079: PPUSH
17080: LD_INT 213
17082: PPUSH
17083: LD_INT 140
17085: PPUSH
17086: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 183 , 84 ) ;
17090: LD_VAR 0 2
17094: PUSH
17095: EMPTY
17096: LIST
17097: PPUSH
17098: LD_INT 183
17100: PPUSH
17101: LD_INT 84
17103: PPUSH
17104: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 95 , 19 ) ;
17108: LD_VAR 0 2
17112: PUSH
17113: EMPTY
17114: LIST
17115: PPUSH
17116: LD_INT 95
17118: PPUSH
17119: LD_INT 19
17121: PPUSH
17122: CALL_OW 174
// end ; end ;
17126: GO 16959
17128: POP
17129: POP
// end ;
17130: PPOPN 2
17132: END
// every 0 0$3 trigger Russian2AI = 1 do
17133: LD_EXP 21
17137: PUSH
17138: LD_INT 1
17140: EQUAL
17141: IFFALSE 17158
17143: GO 17145
17145: DISABLE
// begin wait ( 0 0$1 ) ;
17146: LD_INT 35
17148: PPUSH
17149: CALL_OW 67
// enable ;
17153: ENABLE
// RepairBuildingRussian2 ;
17154: CALL 17159 0 0
// end ;
17158: END
// export DestroyRepairRU2 ; export function RepairBuildingRussian2 ; var enginer_list , scientist_list , buildings , i , un ; begin
17159: LD_INT 0
17161: PPUSH
17162: PPUSH
17163: PPUSH
17164: PPUSH
17165: PPUSH
17166: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_class , 2 ] ] ) ;
17167: LD_ADDR_VAR 0 2
17171: PUSH
17172: LD_INT 22
17174: PUSH
17175: LD_EXP 56
17179: PUSH
17180: EMPTY
17181: LIST
17182: LIST
17183: PUSH
17184: LD_INT 25
17186: PUSH
17187: LD_INT 2
17189: PUSH
17190: EMPTY
17191: LIST
17192: LIST
17193: PUSH
17194: EMPTY
17195: LIST
17196: LIST
17197: PPUSH
17198: CALL_OW 69
17202: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_class , 4 ] ] ) ;
17203: LD_ADDR_VAR 0 3
17207: PUSH
17208: LD_INT 22
17210: PUSH
17211: LD_EXP 56
17215: PUSH
17216: EMPTY
17217: LIST
17218: LIST
17219: PUSH
17220: LD_INT 25
17222: PUSH
17223: LD_INT 4
17225: PUSH
17226: EMPTY
17227: LIST
17228: LIST
17229: PUSH
17230: EMPTY
17231: LIST
17232: LIST
17233: PPUSH
17234: CALL_OW 69
17238: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu2 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
17239: LD_ADDR_VAR 0 4
17243: PUSH
17244: LD_INT 22
17246: PUSH
17247: LD_EXP 56
17251: PUSH
17252: EMPTY
17253: LIST
17254: LIST
17255: PUSH
17256: LD_INT 21
17258: PUSH
17259: LD_INT 3
17261: PUSH
17262: EMPTY
17263: LIST
17264: LIST
17265: PUSH
17266: LD_INT 3
17268: PUSH
17269: LD_INT 24
17271: PUSH
17272: LD_INT 1000
17274: PUSH
17275: EMPTY
17276: LIST
17277: LIST
17278: PUSH
17279: EMPTY
17280: LIST
17281: LIST
17282: PUSH
17283: EMPTY
17284: LIST
17285: LIST
17286: LIST
17287: PUSH
17288: EMPTY
17289: LIST
17290: PPUSH
17291: CALL_OW 69
17295: ST_TO_ADDR
// DestroyRepairRU2 = 0 ;
17296: LD_ADDR_EXP 86
17300: PUSH
17301: LD_INT 0
17303: ST_TO_ADDR
// if buildings > 0 then
17304: LD_VAR 0 4
17308: PUSH
17309: LD_INT 0
17311: GREATER
17312: IFFALSE 17447
// begin for i = 1 to enginer_list do
17314: LD_ADDR_VAR 0 5
17318: PUSH
17319: DOUBLE
17320: LD_INT 1
17322: DEC
17323: ST_TO_ADDR
17324: LD_VAR 0 2
17328: PUSH
17329: FOR_TO
17330: IFFALSE 17445
// begin ComExitBuilding ( enginer_list [ i ] ) ;
17332: LD_VAR 0 2
17336: PUSH
17337: LD_VAR 0 5
17341: ARRAY
17342: PPUSH
17343: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
17347: LD_VAR 0 2
17351: PUSH
17352: LD_VAR 0 5
17356: ARRAY
17357: PPUSH
17358: LD_VAR 0 4
17362: PUSH
17363: LD_INT 1
17365: ARRAY
17366: PPUSH
17367: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
17371: LD_VAR 0 2
17375: PUSH
17376: LD_VAR 0 5
17380: ARRAY
17381: PPUSH
17382: CALL_OW 256
17386: PUSH
17387: LD_INT 800
17389: LESS
17390: IFFALSE 17425
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
17392: LD_VAR 0 3
17396: PUSH
17397: LD_INT 1
17399: ARRAY
17400: PPUSH
17401: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Ru2HealZone ) ;
17405: LD_VAR 0 2
17409: PUSH
17410: LD_VAR 0 5
17414: ARRAY
17415: PPUSH
17416: LD_INT 12
17418: PPUSH
17419: CALL_OW 113
// end else
17423: GO 17443
// ComEnterUnit ( scientist_list [ 1 ] , ru2lab1 ) ;
17425: LD_VAR 0 3
17429: PUSH
17430: LD_INT 1
17432: ARRAY
17433: PPUSH
17434: LD_EXP 67
17438: PPUSH
17439: CALL_OW 120
// end ;
17443: GO 17329
17445: POP
17446: POP
// end ; for i = 1 to enginer_list do
17447: LD_ADDR_VAR 0 5
17451: PUSH
17452: DOUBLE
17453: LD_INT 1
17455: DEC
17456: ST_TO_ADDR
17457: LD_VAR 0 2
17461: PUSH
17462: FOR_TO
17463: IFFALSE 17624
// begin wait ( 0 0$3 ) ;
17465: LD_INT 105
17467: PPUSH
17468: CALL_OW 67
// if buildings = 0 and DestroyRepairRU2 = 0 then
17472: LD_VAR 0 4
17476: PUSH
17477: LD_INT 0
17479: EQUAL
17480: PUSH
17481: LD_EXP 86
17485: PUSH
17486: LD_INT 0
17488: EQUAL
17489: AND
17490: IFFALSE 17514
// begin ComEnterUnit ( enginer_list [ i ] , ru2depo ) ;
17492: LD_VAR 0 2
17496: PUSH
17497: LD_VAR 0 5
17501: ARRAY
17502: PPUSH
17503: LD_EXP 66
17507: PPUSH
17508: CALL_OW 120
// end else
17512: GO 17529
// begin ComExitBuilding ( enginer_list [ i ] ) ;
17514: LD_VAR 0 2
17518: PUSH
17519: LD_VAR 0 5
17523: ARRAY
17524: PPUSH
17525: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
17529: LD_VAR 0 2
17533: PUSH
17534: LD_VAR 0 5
17538: ARRAY
17539: PPUSH
17540: CALL_OW 256
17544: PUSH
17545: LD_INT 1000
17547: LESS
17548: IFFALSE 17583
// begin ComMoveToArea ( enginer_List [ i ] , Ru2HealZone ) ;
17550: LD_VAR 0 2
17554: PUSH
17555: LD_VAR 0 5
17559: ARRAY
17560: PPUSH
17561: LD_INT 12
17563: PPUSH
17564: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
17568: LD_VAR 0 3
17572: PUSH
17573: LD_INT 1
17575: ARRAY
17576: PPUSH
17577: CALL_OW 122
// end else
17581: GO 17622
// if GetLives ( enginer_list [ i ] ) = 1000 then
17583: LD_VAR 0 2
17587: PUSH
17588: LD_VAR 0 5
17592: ARRAY
17593: PPUSH
17594: CALL_OW 256
17598: PUSH
17599: LD_INT 1000
17601: EQUAL
17602: IFFALSE 17622
// begin ComEnterUnit ( scientist_list [ 1 ] , ru2lab1 ) ;
17604: LD_VAR 0 3
17608: PUSH
17609: LD_INT 1
17611: ARRAY
17612: PPUSH
17613: LD_EXP 67
17617: PPUSH
17618: CALL_OW 120
// end ; end ;
17622: GO 17462
17624: POP
17625: POP
// end ;
17626: LD_VAR 0 1
17630: RET
// every 0 0$1 trigger Russian2AI = 1 do var i , l ;
17631: LD_EXP 21
17635: PUSH
17636: LD_INT 1
17638: EQUAL
17639: IFFALSE 17716
17641: GO 17643
17643: DISABLE
17644: LD_INT 0
17646: PPUSH
17647: PPUSH
// begin enable ;
17648: ENABLE
// for i in FilterUnitsInArea ( Ru2Base , [ [ f_class , 1 ] , [ f_side , cpu2 ] ] ) do
17649: LD_ADDR_VAR 0 1
17653: PUSH
17654: LD_INT 8
17656: PPUSH
17657: LD_INT 25
17659: PUSH
17660: LD_INT 1
17662: PUSH
17663: EMPTY
17664: LIST
17665: LIST
17666: PUSH
17667: LD_INT 22
17669: PUSH
17670: LD_EXP 56
17674: PUSH
17675: EMPTY
17676: LIST
17677: LIST
17678: PUSH
17679: EMPTY
17680: LIST
17681: LIST
17682: PPUSH
17683: CALL_OW 70
17687: PUSH
17688: FOR_IN
17689: IFFALSE 17714
// begin wait ( 0 0$2 ) ;
17691: LD_INT 70
17693: PPUSH
17694: CALL_OW 67
// ComEnterUnit ( i , ru2armoury ) ;
17698: LD_VAR 0 1
17702: PPUSH
17703: LD_EXP 70
17707: PPUSH
17708: CALL_OW 120
// end ;
17712: GO 17688
17714: POP
17715: POP
// end ;
17716: PPOPN 2
17718: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] ] ) = 0 do
17719: LD_INT 22
17721: PUSH
17722: LD_EXP 56
17726: PUSH
17727: EMPTY
17728: LIST
17729: LIST
17730: PUSH
17731: LD_INT 21
17733: PUSH
17734: LD_INT 2
17736: PUSH
17737: EMPTY
17738: LIST
17739: LIST
17740: PUSH
17741: EMPTY
17742: LIST
17743: LIST
17744: PPUSH
17745: CALL_OW 69
17749: PUSH
17750: LD_INT 0
17752: EQUAL
17753: IFFALSE 17927
17755: GO 17757
17757: DISABLE
// begin enable ;
17758: ENABLE
// AddComConstruct ( ru2fab , 22 , 3 , 3 , 44 ) ;
17759: LD_EXP 69
17763: PPUSH
17764: LD_INT 22
17766: PPUSH
17767: LD_INT 3
17769: PPUSH
17770: LD_INT 3
17772: PPUSH
17773: LD_INT 44
17775: PPUSH
17776: CALL_OW 185
// AddComConstruct ( ru2fab , 22 , 3 , 3 , 44 ) ;
17780: LD_EXP 69
17784: PPUSH
17785: LD_INT 22
17787: PPUSH
17788: LD_INT 3
17790: PPUSH
17791: LD_INT 3
17793: PPUSH
17794: LD_INT 44
17796: PPUSH
17797: CALL_OW 185
// AddComConstruct ( ru2fab , 22 , 3 , 3 , 43 ) ;
17801: LD_EXP 69
17805: PPUSH
17806: LD_INT 22
17808: PPUSH
17809: LD_INT 3
17811: PPUSH
17812: LD_INT 3
17814: PPUSH
17815: LD_INT 43
17817: PPUSH
17818: CALL_OW 185
// AddComConstruct ( ru2fab , 22 , 3 , 3 , 43 ) ;
17822: LD_EXP 69
17826: PPUSH
17827: LD_INT 22
17829: PPUSH
17830: LD_INT 3
17832: PPUSH
17833: LD_INT 3
17835: PPUSH
17836: LD_INT 43
17838: PPUSH
17839: CALL_OW 185
// AddComConstruct ( ru2fab , 24 , 3 , 3 , 46 ) ;
17843: LD_EXP 69
17847: PPUSH
17848: LD_INT 24
17850: PPUSH
17851: LD_INT 3
17853: PPUSH
17854: LD_INT 3
17856: PPUSH
17857: LD_INT 46
17859: PPUSH
17860: CALL_OW 185
// AddComConstruct ( ru2fab , 24 , 3 , 3 , 46 ) ;
17864: LD_EXP 69
17868: PPUSH
17869: LD_INT 24
17871: PPUSH
17872: LD_INT 3
17874: PPUSH
17875: LD_INT 3
17877: PPUSH
17878: LD_INT 46
17880: PPUSH
17881: CALL_OW 185
// AddComConstruct ( ru2fab , 24 , 3 , 3 , 47 ) ;
17885: LD_EXP 69
17889: PPUSH
17890: LD_INT 24
17892: PPUSH
17893: LD_INT 3
17895: PPUSH
17896: LD_INT 3
17898: PPUSH
17899: LD_INT 47
17901: PPUSH
17902: CALL_OW 185
// AddComConstruct ( ru2fab , 24 , 3 , 3 , 47 ) ;
17906: LD_EXP 69
17910: PPUSH
17911: LD_INT 24
17913: PPUSH
17914: LD_INT 3
17916: PPUSH
17917: LD_INT 3
17919: PPUSH
17920: LD_INT 47
17922: PPUSH
17923: CALL_OW 185
// end ;
17927: END
// every 1 1$0 trigger Russian2AI = 1 and FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] ] ) >= 8 do var tactic , i ;
17928: LD_EXP 21
17932: PUSH
17933: LD_INT 1
17935: EQUAL
17936: PUSH
17937: LD_INT 22
17939: PUSH
17940: LD_EXP 56
17944: PUSH
17945: EMPTY
17946: LIST
17947: LIST
17948: PUSH
17949: LD_INT 21
17951: PUSH
17952: LD_INT 2
17954: PUSH
17955: EMPTY
17956: LIST
17957: LIST
17958: PUSH
17959: EMPTY
17960: LIST
17961: LIST
17962: PPUSH
17963: CALL_OW 69
17967: PUSH
17968: LD_INT 8
17970: GREATEREQUAL
17971: AND
17972: IFFALSE 18216
17974: GO 17976
17976: DISABLE
17977: LD_INT 0
17979: PPUSH
17980: PPUSH
// begin enable ;
17981: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
17982: LD_ADDR_VAR 0 1
17986: PUSH
17987: LD_INT 1
17989: PPUSH
17990: LD_INT 2
17992: PPUSH
17993: CALL_OW 12
17997: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu2 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
17998: LD_ADDR_VAR 0 2
18002: PUSH
18003: LD_INT 22
18005: PUSH
18006: LD_EXP 56
18010: PUSH
18011: EMPTY
18012: LIST
18013: LIST
18014: PUSH
18015: LD_INT 21
18017: PUSH
18018: LD_INT 2
18020: PUSH
18021: EMPTY
18022: LIST
18023: LIST
18024: PUSH
18025: LD_INT 24
18027: PUSH
18028: LD_INT 1000
18030: PUSH
18031: EMPTY
18032: LIST
18033: LIST
18034: PUSH
18035: EMPTY
18036: LIST
18037: LIST
18038: LIST
18039: PPUSH
18040: CALL_OW 69
18044: PUSH
18045: FOR_IN
18046: IFFALSE 18214
// begin if Tactic = 1 then
18048: LD_VAR 0 1
18052: PUSH
18053: LD_INT 1
18055: EQUAL
18056: IFFALSE 18130
// begin AddComAgressiveMove ( [ i ] , 29 , 18 ) ;
18058: LD_VAR 0 2
18062: PUSH
18063: EMPTY
18064: LIST
18065: PPUSH
18066: LD_INT 29
18068: PPUSH
18069: LD_INT 18
18071: PPUSH
18072: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 79 , 140 ) ;
18076: LD_VAR 0 2
18080: PUSH
18081: EMPTY
18082: LIST
18083: PPUSH
18084: LD_INT 79
18086: PPUSH
18087: LD_INT 140
18089: PPUSH
18090: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 213 , 140 ) ;
18094: LD_VAR 0 2
18098: PUSH
18099: EMPTY
18100: LIST
18101: PPUSH
18102: LD_INT 213
18104: PPUSH
18105: LD_INT 140
18107: PPUSH
18108: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 183 , 84 ) ;
18112: LD_VAR 0 2
18116: PUSH
18117: EMPTY
18118: LIST
18119: PPUSH
18120: LD_INT 183
18122: PPUSH
18123: LD_INT 84
18125: PPUSH
18126: CALL_OW 174
// end ; if Tactic = 2 then
18130: LD_VAR 0 1
18134: PUSH
18135: LD_INT 2
18137: EQUAL
18138: IFFALSE 18212
// begin AddComAgressiveMove ( [ i ] , 183 , 84 ) ;
18140: LD_VAR 0 2
18144: PUSH
18145: EMPTY
18146: LIST
18147: PPUSH
18148: LD_INT 183
18150: PPUSH
18151: LD_INT 84
18153: PPUSH
18154: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 213 , 140 ) ;
18158: LD_VAR 0 2
18162: PUSH
18163: EMPTY
18164: LIST
18165: PPUSH
18166: LD_INT 213
18168: PPUSH
18169: LD_INT 140
18171: PPUSH
18172: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 79 , 140 ) ;
18176: LD_VAR 0 2
18180: PUSH
18181: EMPTY
18182: LIST
18183: PPUSH
18184: LD_INT 79
18186: PPUSH
18187: LD_INT 140
18189: PPUSH
18190: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 29 , 18 ) ;
18194: LD_VAR 0 2
18198: PUSH
18199: EMPTY
18200: LIST
18201: PPUSH
18202: LD_INT 29
18204: PPUSH
18205: LD_INT 18
18207: PPUSH
18208: CALL_OW 174
// end ; end ;
18212: GO 18045
18214: POP
18215: POP
// end ;
18216: PPOPN 2
18218: END
// every 0 0$3 trigger Russian3AI = 1 do
18219: LD_EXP 22
18223: PUSH
18224: LD_INT 1
18226: EQUAL
18227: IFFALSE 18244
18229: GO 18231
18231: DISABLE
// begin wait ( 0 0$1 ) ;
18232: LD_INT 35
18234: PPUSH
18235: CALL_OW 67
// enable ;
18239: ENABLE
// RepairBuildingRussian3 ;
18240: CALL 18245 0 0
// end ;
18244: END
// export DestroyRepairRU3 ; export function RepairBuildingRussian3 ; var enginer_list , scientist_list , buildings , i , un ; begin
18245: LD_INT 0
18247: PPUSH
18248: PPUSH
18249: PPUSH
18250: PPUSH
18251: PPUSH
18252: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_class , 2 ] ] ) ;
18253: LD_ADDR_VAR 0 2
18257: PUSH
18258: LD_INT 22
18260: PUSH
18261: LD_EXP 57
18265: PUSH
18266: EMPTY
18267: LIST
18268: LIST
18269: PUSH
18270: LD_INT 25
18272: PUSH
18273: LD_INT 2
18275: PUSH
18276: EMPTY
18277: LIST
18278: LIST
18279: PUSH
18280: EMPTY
18281: LIST
18282: LIST
18283: PPUSH
18284: CALL_OW 69
18288: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_class , 4 ] ] ) ;
18289: LD_ADDR_VAR 0 3
18293: PUSH
18294: LD_INT 22
18296: PUSH
18297: LD_EXP 57
18301: PUSH
18302: EMPTY
18303: LIST
18304: LIST
18305: PUSH
18306: LD_INT 25
18308: PUSH
18309: LD_INT 4
18311: PUSH
18312: EMPTY
18313: LIST
18314: LIST
18315: PUSH
18316: EMPTY
18317: LIST
18318: LIST
18319: PPUSH
18320: CALL_OW 69
18324: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu3 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
18325: LD_ADDR_VAR 0 4
18329: PUSH
18330: LD_INT 22
18332: PUSH
18333: LD_EXP 57
18337: PUSH
18338: EMPTY
18339: LIST
18340: LIST
18341: PUSH
18342: LD_INT 21
18344: PUSH
18345: LD_INT 3
18347: PUSH
18348: EMPTY
18349: LIST
18350: LIST
18351: PUSH
18352: LD_INT 3
18354: PUSH
18355: LD_INT 24
18357: PUSH
18358: LD_INT 1000
18360: PUSH
18361: EMPTY
18362: LIST
18363: LIST
18364: PUSH
18365: EMPTY
18366: LIST
18367: LIST
18368: PUSH
18369: EMPTY
18370: LIST
18371: LIST
18372: LIST
18373: PUSH
18374: EMPTY
18375: LIST
18376: PPUSH
18377: CALL_OW 69
18381: ST_TO_ADDR
// DestroyRepairRU3 = 0 ;
18382: LD_ADDR_EXP 87
18386: PUSH
18387: LD_INT 0
18389: ST_TO_ADDR
// if buildings > 0 then
18390: LD_VAR 0 4
18394: PUSH
18395: LD_INT 0
18397: GREATER
18398: IFFALSE 18533
// begin for i = 1 to enginer_list do
18400: LD_ADDR_VAR 0 5
18404: PUSH
18405: DOUBLE
18406: LD_INT 1
18408: DEC
18409: ST_TO_ADDR
18410: LD_VAR 0 2
18414: PUSH
18415: FOR_TO
18416: IFFALSE 18531
// begin ComExitBuilding ( enginer_list [ i ] ) ;
18418: LD_VAR 0 2
18422: PUSH
18423: LD_VAR 0 5
18427: ARRAY
18428: PPUSH
18429: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
18433: LD_VAR 0 2
18437: PUSH
18438: LD_VAR 0 5
18442: ARRAY
18443: PPUSH
18444: LD_VAR 0 4
18448: PUSH
18449: LD_INT 1
18451: ARRAY
18452: PPUSH
18453: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
18457: LD_VAR 0 2
18461: PUSH
18462: LD_VAR 0 5
18466: ARRAY
18467: PPUSH
18468: CALL_OW 256
18472: PUSH
18473: LD_INT 800
18475: LESS
18476: IFFALSE 18511
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
18478: LD_VAR 0 3
18482: PUSH
18483: LD_INT 1
18485: ARRAY
18486: PPUSH
18487: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Ru3HealZone ) ;
18491: LD_VAR 0 2
18495: PUSH
18496: LD_VAR 0 5
18500: ARRAY
18501: PPUSH
18502: LD_INT 13
18504: PPUSH
18505: CALL_OW 113
// end else
18509: GO 18529
// ComEnterUnit ( scientist_list [ 1 ] , ru3lab1 ) ;
18511: LD_VAR 0 3
18515: PUSH
18516: LD_INT 1
18518: ARRAY
18519: PPUSH
18520: LD_EXP 72
18524: PPUSH
18525: CALL_OW 120
// end ;
18529: GO 18415
18531: POP
18532: POP
// end ; for i = 1 to enginer_list do
18533: LD_ADDR_VAR 0 5
18537: PUSH
18538: DOUBLE
18539: LD_INT 1
18541: DEC
18542: ST_TO_ADDR
18543: LD_VAR 0 2
18547: PUSH
18548: FOR_TO
18549: IFFALSE 18710
// begin wait ( 0 0$3 ) ;
18551: LD_INT 105
18553: PPUSH
18554: CALL_OW 67
// if buildings = 0 and DestroyRepairRU3 = 0 then
18558: LD_VAR 0 4
18562: PUSH
18563: LD_INT 0
18565: EQUAL
18566: PUSH
18567: LD_EXP 87
18571: PUSH
18572: LD_INT 0
18574: EQUAL
18575: AND
18576: IFFALSE 18600
// begin ComEnterUnit ( enginer_list [ i ] , ru3depo ) ;
18578: LD_VAR 0 2
18582: PUSH
18583: LD_VAR 0 5
18587: ARRAY
18588: PPUSH
18589: LD_EXP 71
18593: PPUSH
18594: CALL_OW 120
// end else
18598: GO 18615
// begin ComExitBuilding ( enginer_list [ i ] ) ;
18600: LD_VAR 0 2
18604: PUSH
18605: LD_VAR 0 5
18609: ARRAY
18610: PPUSH
18611: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
18615: LD_VAR 0 2
18619: PUSH
18620: LD_VAR 0 5
18624: ARRAY
18625: PPUSH
18626: CALL_OW 256
18630: PUSH
18631: LD_INT 1000
18633: LESS
18634: IFFALSE 18669
// begin ComMoveToArea ( enginer_List [ i ] , Ru3HealZone ) ;
18636: LD_VAR 0 2
18640: PUSH
18641: LD_VAR 0 5
18645: ARRAY
18646: PPUSH
18647: LD_INT 13
18649: PPUSH
18650: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
18654: LD_VAR 0 3
18658: PUSH
18659: LD_INT 1
18661: ARRAY
18662: PPUSH
18663: CALL_OW 122
// end else
18667: GO 18708
// if GetLives ( enginer_list [ i ] ) = 1000 then
18669: LD_VAR 0 2
18673: PUSH
18674: LD_VAR 0 5
18678: ARRAY
18679: PPUSH
18680: CALL_OW 256
18684: PUSH
18685: LD_INT 1000
18687: EQUAL
18688: IFFALSE 18708
// begin ComEnterUnit ( scientist_list [ 1 ] , ru3lab1 ) ;
18690: LD_VAR 0 3
18694: PUSH
18695: LD_INT 1
18697: ARRAY
18698: PPUSH
18699: LD_EXP 72
18703: PPUSH
18704: CALL_OW 120
// end ; end ;
18708: GO 18548
18710: POP
18711: POP
// end ;
18712: LD_VAR 0 1
18716: RET
// every 0 0$1 trigger Russian3AI = 1 do var i , l ;
18717: LD_EXP 22
18721: PUSH
18722: LD_INT 1
18724: EQUAL
18725: IFFALSE 18802
18727: GO 18729
18729: DISABLE
18730: LD_INT 0
18732: PPUSH
18733: PPUSH
// begin enable ;
18734: ENABLE
// for i in FilterUnitsInArea ( Ru3Base , [ [ f_class , 1 ] , [ f_side , cpu3 ] ] ) do
18735: LD_ADDR_VAR 0 1
18739: PUSH
18740: LD_INT 9
18742: PPUSH
18743: LD_INT 25
18745: PUSH
18746: LD_INT 1
18748: PUSH
18749: EMPTY
18750: LIST
18751: LIST
18752: PUSH
18753: LD_INT 22
18755: PUSH
18756: LD_EXP 57
18760: PUSH
18761: EMPTY
18762: LIST
18763: LIST
18764: PUSH
18765: EMPTY
18766: LIST
18767: LIST
18768: PPUSH
18769: CALL_OW 70
18773: PUSH
18774: FOR_IN
18775: IFFALSE 18800
// begin wait ( 0 0$2 ) ;
18777: LD_INT 70
18779: PPUSH
18780: CALL_OW 67
// ComEnterUnit ( i , ru3armoury ) ;
18784: LD_VAR 0 1
18788: PPUSH
18789: LD_EXP 75
18793: PPUSH
18794: CALL_OW 120
// end ;
18798: GO 18774
18800: POP
18801: POP
// end ;
18802: PPOPN 2
18804: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] ] ) = 0 do
18805: LD_INT 22
18807: PUSH
18808: LD_EXP 57
18812: PUSH
18813: EMPTY
18814: LIST
18815: LIST
18816: PUSH
18817: LD_INT 21
18819: PUSH
18820: LD_INT 2
18822: PUSH
18823: EMPTY
18824: LIST
18825: LIST
18826: PUSH
18827: EMPTY
18828: LIST
18829: LIST
18830: PPUSH
18831: CALL_OW 69
18835: PUSH
18836: LD_INT 0
18838: EQUAL
18839: IFFALSE 19013
18841: GO 18843
18843: DISABLE
// begin enable ;
18844: ENABLE
// AddComConstruct ( ru3fab , 22 , 3 , 3 , 44 ) ;
18845: LD_EXP 74
18849: PPUSH
18850: LD_INT 22
18852: PPUSH
18853: LD_INT 3
18855: PPUSH
18856: LD_INT 3
18858: PPUSH
18859: LD_INT 44
18861: PPUSH
18862: CALL_OW 185
// AddComConstruct ( ru3fab , 22 , 3 , 3 , 44 ) ;
18866: LD_EXP 74
18870: PPUSH
18871: LD_INT 22
18873: PPUSH
18874: LD_INT 3
18876: PPUSH
18877: LD_INT 3
18879: PPUSH
18880: LD_INT 44
18882: PPUSH
18883: CALL_OW 185
// AddComConstruct ( ru3fab , 22 , 3 , 3 , 43 ) ;
18887: LD_EXP 74
18891: PPUSH
18892: LD_INT 22
18894: PPUSH
18895: LD_INT 3
18897: PPUSH
18898: LD_INT 3
18900: PPUSH
18901: LD_INT 43
18903: PPUSH
18904: CALL_OW 185
// AddComConstruct ( ru3fab , 22 , 3 , 3 , 43 ) ;
18908: LD_EXP 74
18912: PPUSH
18913: LD_INT 22
18915: PPUSH
18916: LD_INT 3
18918: PPUSH
18919: LD_INT 3
18921: PPUSH
18922: LD_INT 43
18924: PPUSH
18925: CALL_OW 185
// AddComConstruct ( ru3fab , 24 , 3 , 3 , 46 ) ;
18929: LD_EXP 74
18933: PPUSH
18934: LD_INT 24
18936: PPUSH
18937: LD_INT 3
18939: PPUSH
18940: LD_INT 3
18942: PPUSH
18943: LD_INT 46
18945: PPUSH
18946: CALL_OW 185
// AddComConstruct ( ru3fab , 24 , 3 , 3 , 46 ) ;
18950: LD_EXP 74
18954: PPUSH
18955: LD_INT 24
18957: PPUSH
18958: LD_INT 3
18960: PPUSH
18961: LD_INT 3
18963: PPUSH
18964: LD_INT 46
18966: PPUSH
18967: CALL_OW 185
// AddComConstruct ( ru3fab , 24 , 3 , 3 , 47 ) ;
18971: LD_EXP 74
18975: PPUSH
18976: LD_INT 24
18978: PPUSH
18979: LD_INT 3
18981: PPUSH
18982: LD_INT 3
18984: PPUSH
18985: LD_INT 47
18987: PPUSH
18988: CALL_OW 185
// AddComConstruct ( ru3fab , 24 , 3 , 3 , 47 ) ;
18992: LD_EXP 74
18996: PPUSH
18997: LD_INT 24
18999: PPUSH
19000: LD_INT 3
19002: PPUSH
19003: LD_INT 3
19005: PPUSH
19006: LD_INT 47
19008: PPUSH
19009: CALL_OW 185
// end ;
19013: END
// every 1 1$0 trigger Russian3AI = 1 and FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] ] ) >= 8 do var tactic , i ;
19014: LD_EXP 22
19018: PUSH
19019: LD_INT 1
19021: EQUAL
19022: PUSH
19023: LD_INT 22
19025: PUSH
19026: LD_EXP 57
19030: PUSH
19031: EMPTY
19032: LIST
19033: LIST
19034: PUSH
19035: LD_INT 21
19037: PUSH
19038: LD_INT 2
19040: PUSH
19041: EMPTY
19042: LIST
19043: LIST
19044: PUSH
19045: EMPTY
19046: LIST
19047: LIST
19048: PPUSH
19049: CALL_OW 69
19053: PUSH
19054: LD_INT 8
19056: GREATEREQUAL
19057: AND
19058: IFFALSE 19302
19060: GO 19062
19062: DISABLE
19063: LD_INT 0
19065: PPUSH
19066: PPUSH
// begin enable ;
19067: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
19068: LD_ADDR_VAR 0 1
19072: PUSH
19073: LD_INT 1
19075: PPUSH
19076: LD_INT 2
19078: PPUSH
19079: CALL_OW 12
19083: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
19084: LD_ADDR_VAR 0 2
19088: PUSH
19089: LD_INT 22
19091: PUSH
19092: LD_EXP 57
19096: PUSH
19097: EMPTY
19098: LIST
19099: LIST
19100: PUSH
19101: LD_INT 21
19103: PUSH
19104: LD_INT 2
19106: PUSH
19107: EMPTY
19108: LIST
19109: LIST
19110: PUSH
19111: LD_INT 24
19113: PUSH
19114: LD_INT 1000
19116: PUSH
19117: EMPTY
19118: LIST
19119: LIST
19120: PUSH
19121: EMPTY
19122: LIST
19123: LIST
19124: LIST
19125: PPUSH
19126: CALL_OW 69
19130: PUSH
19131: FOR_IN
19132: IFFALSE 19300
// begin if Tactic = 1 then
19134: LD_VAR 0 1
19138: PUSH
19139: LD_INT 1
19141: EQUAL
19142: IFFALSE 19216
// begin AddComAgressiveMove ( [ i ] , 95 , 19 ) ;
19144: LD_VAR 0 2
19148: PUSH
19149: EMPTY
19150: LIST
19151: PPUSH
19152: LD_INT 95
19154: PPUSH
19155: LD_INT 19
19157: PPUSH
19158: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 28 , 21 ) ;
19162: LD_VAR 0 2
19166: PUSH
19167: EMPTY
19168: LIST
19169: PPUSH
19170: LD_INT 28
19172: PPUSH
19173: LD_INT 21
19175: PPUSH
19176: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 82 , 131 ) ;
19180: LD_VAR 0 2
19184: PUSH
19185: EMPTY
19186: LIST
19187: PPUSH
19188: LD_INT 82
19190: PPUSH
19191: LD_INT 131
19193: PPUSH
19194: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 210 , 140 ) ;
19198: LD_VAR 0 2
19202: PUSH
19203: EMPTY
19204: LIST
19205: PPUSH
19206: LD_INT 210
19208: PPUSH
19209: LD_INT 140
19211: PPUSH
19212: CALL_OW 174
// end ; if Tactic = 2 then
19216: LD_VAR 0 1
19220: PUSH
19221: LD_INT 2
19223: EQUAL
19224: IFFALSE 19298
// begin AddComAgressiveMove ( [ i ] , 210 , 140 ) ;
19226: LD_VAR 0 2
19230: PUSH
19231: EMPTY
19232: LIST
19233: PPUSH
19234: LD_INT 210
19236: PPUSH
19237: LD_INT 140
19239: PPUSH
19240: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 82 , 131 ) ;
19244: LD_VAR 0 2
19248: PUSH
19249: EMPTY
19250: LIST
19251: PPUSH
19252: LD_INT 82
19254: PPUSH
19255: LD_INT 131
19257: PPUSH
19258: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 28 , 21 ) ;
19262: LD_VAR 0 2
19266: PUSH
19267: EMPTY
19268: LIST
19269: PPUSH
19270: LD_INT 28
19272: PPUSH
19273: LD_INT 21
19275: PPUSH
19276: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 95 , 19 ) ;
19280: LD_VAR 0 2
19284: PUSH
19285: EMPTY
19286: LIST
19287: PPUSH
19288: LD_INT 95
19290: PPUSH
19291: LD_INT 19
19293: PPUSH
19294: CALL_OW 174
// end ; end ;
19298: GO 19131
19300: POP
19301: POP
// end ;
19302: PPOPN 2
19304: END
// every 0 0$3 trigger Russian4AI = 1 do
19305: LD_EXP 23
19309: PUSH
19310: LD_INT 1
19312: EQUAL
19313: IFFALSE 19330
19315: GO 19317
19317: DISABLE
// begin wait ( 0 0$1 ) ;
19318: LD_INT 35
19320: PPUSH
19321: CALL_OW 67
// enable ;
19325: ENABLE
// RepairBuildingRussian4 ;
19326: CALL 19331 0 0
// end ;
19330: END
// export DestroyRepairRU4 ; export function RepairBuildingRussian4 ; var enginer_list , scientist_list , buildings , i , un ; begin
19331: LD_INT 0
19333: PPUSH
19334: PPUSH
19335: PPUSH
19336: PPUSH
19337: PPUSH
19338: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_class , 2 ] ] ) ;
19339: LD_ADDR_VAR 0 2
19343: PUSH
19344: LD_INT 22
19346: PUSH
19347: LD_EXP 58
19351: PUSH
19352: EMPTY
19353: LIST
19354: LIST
19355: PUSH
19356: LD_INT 25
19358: PUSH
19359: LD_INT 2
19361: PUSH
19362: EMPTY
19363: LIST
19364: LIST
19365: PUSH
19366: EMPTY
19367: LIST
19368: LIST
19369: PPUSH
19370: CALL_OW 69
19374: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_class , 4 ] ] ) ;
19375: LD_ADDR_VAR 0 3
19379: PUSH
19380: LD_INT 22
19382: PUSH
19383: LD_EXP 58
19387: PUSH
19388: EMPTY
19389: LIST
19390: LIST
19391: PUSH
19392: LD_INT 25
19394: PUSH
19395: LD_INT 4
19397: PUSH
19398: EMPTY
19399: LIST
19400: LIST
19401: PUSH
19402: EMPTY
19403: LIST
19404: LIST
19405: PPUSH
19406: CALL_OW 69
19410: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu4 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
19411: LD_ADDR_VAR 0 4
19415: PUSH
19416: LD_INT 22
19418: PUSH
19419: LD_EXP 58
19423: PUSH
19424: EMPTY
19425: LIST
19426: LIST
19427: PUSH
19428: LD_INT 21
19430: PUSH
19431: LD_INT 3
19433: PUSH
19434: EMPTY
19435: LIST
19436: LIST
19437: PUSH
19438: LD_INT 3
19440: PUSH
19441: LD_INT 24
19443: PUSH
19444: LD_INT 1000
19446: PUSH
19447: EMPTY
19448: LIST
19449: LIST
19450: PUSH
19451: EMPTY
19452: LIST
19453: LIST
19454: PUSH
19455: EMPTY
19456: LIST
19457: LIST
19458: LIST
19459: PUSH
19460: EMPTY
19461: LIST
19462: PPUSH
19463: CALL_OW 69
19467: ST_TO_ADDR
// DestroyRepairRU4 = 0 ;
19468: LD_ADDR_EXP 88
19472: PUSH
19473: LD_INT 0
19475: ST_TO_ADDR
// if buildings > 0 then
19476: LD_VAR 0 4
19480: PUSH
19481: LD_INT 0
19483: GREATER
19484: IFFALSE 19619
// begin for i = 1 to enginer_list do
19486: LD_ADDR_VAR 0 5
19490: PUSH
19491: DOUBLE
19492: LD_INT 1
19494: DEC
19495: ST_TO_ADDR
19496: LD_VAR 0 2
19500: PUSH
19501: FOR_TO
19502: IFFALSE 19617
// begin ComExitBuilding ( enginer_list [ i ] ) ;
19504: LD_VAR 0 2
19508: PUSH
19509: LD_VAR 0 5
19513: ARRAY
19514: PPUSH
19515: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
19519: LD_VAR 0 2
19523: PUSH
19524: LD_VAR 0 5
19528: ARRAY
19529: PPUSH
19530: LD_VAR 0 4
19534: PUSH
19535: LD_INT 1
19537: ARRAY
19538: PPUSH
19539: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
19543: LD_VAR 0 2
19547: PUSH
19548: LD_VAR 0 5
19552: ARRAY
19553: PPUSH
19554: CALL_OW 256
19558: PUSH
19559: LD_INT 800
19561: LESS
19562: IFFALSE 19597
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
19564: LD_VAR 0 3
19568: PUSH
19569: LD_INT 1
19571: ARRAY
19572: PPUSH
19573: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Ru4HealZone ) ;
19577: LD_VAR 0 2
19581: PUSH
19582: LD_VAR 0 5
19586: ARRAY
19587: PPUSH
19588: LD_INT 14
19590: PPUSH
19591: CALL_OW 113
// end else
19595: GO 19615
// ComEnterUnit ( scientist_list [ 1 ] , ru4lab1 ) ;
19597: LD_VAR 0 3
19601: PUSH
19602: LD_INT 1
19604: ARRAY
19605: PPUSH
19606: LD_EXP 77
19610: PPUSH
19611: CALL_OW 120
// end ;
19615: GO 19501
19617: POP
19618: POP
// end ; for i = 1 to enginer_list do
19619: LD_ADDR_VAR 0 5
19623: PUSH
19624: DOUBLE
19625: LD_INT 1
19627: DEC
19628: ST_TO_ADDR
19629: LD_VAR 0 2
19633: PUSH
19634: FOR_TO
19635: IFFALSE 19796
// begin wait ( 0 0$3 ) ;
19637: LD_INT 105
19639: PPUSH
19640: CALL_OW 67
// if buildings = 0 and DestroyRepairRU4 = 0 then
19644: LD_VAR 0 4
19648: PUSH
19649: LD_INT 0
19651: EQUAL
19652: PUSH
19653: LD_EXP 88
19657: PUSH
19658: LD_INT 0
19660: EQUAL
19661: AND
19662: IFFALSE 19686
// begin ComEnterUnit ( enginer_list [ i ] , ru4depo ) ;
19664: LD_VAR 0 2
19668: PUSH
19669: LD_VAR 0 5
19673: ARRAY
19674: PPUSH
19675: LD_EXP 76
19679: PPUSH
19680: CALL_OW 120
// end else
19684: GO 19701
// begin ComExitBuilding ( enginer_list [ i ] ) ;
19686: LD_VAR 0 2
19690: PUSH
19691: LD_VAR 0 5
19695: ARRAY
19696: PPUSH
19697: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
19701: LD_VAR 0 2
19705: PUSH
19706: LD_VAR 0 5
19710: ARRAY
19711: PPUSH
19712: CALL_OW 256
19716: PUSH
19717: LD_INT 1000
19719: LESS
19720: IFFALSE 19755
// begin ComMoveToArea ( enginer_List [ i ] , Ru4HealZone ) ;
19722: LD_VAR 0 2
19726: PUSH
19727: LD_VAR 0 5
19731: ARRAY
19732: PPUSH
19733: LD_INT 14
19735: PPUSH
19736: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
19740: LD_VAR 0 3
19744: PUSH
19745: LD_INT 1
19747: ARRAY
19748: PPUSH
19749: CALL_OW 122
// end else
19753: GO 19794
// if GetLives ( enginer_list [ i ] ) = 1000 then
19755: LD_VAR 0 2
19759: PUSH
19760: LD_VAR 0 5
19764: ARRAY
19765: PPUSH
19766: CALL_OW 256
19770: PUSH
19771: LD_INT 1000
19773: EQUAL
19774: IFFALSE 19794
// begin ComEnterUnit ( scientist_list [ 1 ] , ru4lab1 ) ;
19776: LD_VAR 0 3
19780: PUSH
19781: LD_INT 1
19783: ARRAY
19784: PPUSH
19785: LD_EXP 77
19789: PPUSH
19790: CALL_OW 120
// end ; end ;
19794: GO 19634
19796: POP
19797: POP
// end ;
19798: LD_VAR 0 1
19802: RET
// every 0 0$1 trigger Russian4AI = 1 do var i , l ;
19803: LD_EXP 23
19807: PUSH
19808: LD_INT 1
19810: EQUAL
19811: IFFALSE 19888
19813: GO 19815
19815: DISABLE
19816: LD_INT 0
19818: PPUSH
19819: PPUSH
// begin enable ;
19820: ENABLE
// for i in FilterUnitsInArea ( Ru4Base , [ [ f_class , 1 ] , [ f_side , cpu4 ] ] ) do
19821: LD_ADDR_VAR 0 1
19825: PUSH
19826: LD_INT 10
19828: PPUSH
19829: LD_INT 25
19831: PUSH
19832: LD_INT 1
19834: PUSH
19835: EMPTY
19836: LIST
19837: LIST
19838: PUSH
19839: LD_INT 22
19841: PUSH
19842: LD_EXP 58
19846: PUSH
19847: EMPTY
19848: LIST
19849: LIST
19850: PUSH
19851: EMPTY
19852: LIST
19853: LIST
19854: PPUSH
19855: CALL_OW 70
19859: PUSH
19860: FOR_IN
19861: IFFALSE 19886
// begin wait ( 0 0$2 ) ;
19863: LD_INT 70
19865: PPUSH
19866: CALL_OW 67
// ComEnterUnit ( i , ru4armoury ) ;
19870: LD_VAR 0 1
19874: PPUSH
19875: LD_EXP 80
19879: PPUSH
19880: CALL_OW 120
// end ;
19884: GO 19860
19886: POP
19887: POP
// end ;
19888: PPOPN 2
19890: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] ] ) = 0 do
19891: LD_INT 22
19893: PUSH
19894: LD_EXP 58
19898: PUSH
19899: EMPTY
19900: LIST
19901: LIST
19902: PUSH
19903: LD_INT 21
19905: PUSH
19906: LD_INT 2
19908: PUSH
19909: EMPTY
19910: LIST
19911: LIST
19912: PUSH
19913: EMPTY
19914: LIST
19915: LIST
19916: PPUSH
19917: CALL_OW 69
19921: PUSH
19922: LD_INT 0
19924: EQUAL
19925: IFFALSE 20099
19927: GO 19929
19929: DISABLE
// begin enable ;
19930: ENABLE
// AddComConstruct ( ru4fab , 22 , 3 , 3 , 44 ) ;
19931: LD_EXP 79
19935: PPUSH
19936: LD_INT 22
19938: PPUSH
19939: LD_INT 3
19941: PPUSH
19942: LD_INT 3
19944: PPUSH
19945: LD_INT 44
19947: PPUSH
19948: CALL_OW 185
// AddComConstruct ( ru4fab , 22 , 3 , 3 , 44 ) ;
19952: LD_EXP 79
19956: PPUSH
19957: LD_INT 22
19959: PPUSH
19960: LD_INT 3
19962: PPUSH
19963: LD_INT 3
19965: PPUSH
19966: LD_INT 44
19968: PPUSH
19969: CALL_OW 185
// AddComConstruct ( ru4fab , 22 , 3 , 3 , 43 ) ;
19973: LD_EXP 79
19977: PPUSH
19978: LD_INT 22
19980: PPUSH
19981: LD_INT 3
19983: PPUSH
19984: LD_INT 3
19986: PPUSH
19987: LD_INT 43
19989: PPUSH
19990: CALL_OW 185
// AddComConstruct ( ru4fab , 22 , 3 , 3 , 43 ) ;
19994: LD_EXP 79
19998: PPUSH
19999: LD_INT 22
20001: PPUSH
20002: LD_INT 3
20004: PPUSH
20005: LD_INT 3
20007: PPUSH
20008: LD_INT 43
20010: PPUSH
20011: CALL_OW 185
// AddComConstruct ( ru4fab , 24 , 3 , 3 , 46 ) ;
20015: LD_EXP 79
20019: PPUSH
20020: LD_INT 24
20022: PPUSH
20023: LD_INT 3
20025: PPUSH
20026: LD_INT 3
20028: PPUSH
20029: LD_INT 46
20031: PPUSH
20032: CALL_OW 185
// AddComConstruct ( ru4fab , 24 , 3 , 3 , 46 ) ;
20036: LD_EXP 79
20040: PPUSH
20041: LD_INT 24
20043: PPUSH
20044: LD_INT 3
20046: PPUSH
20047: LD_INT 3
20049: PPUSH
20050: LD_INT 46
20052: PPUSH
20053: CALL_OW 185
// AddComConstruct ( ru4fab , 24 , 3 , 3 , 47 ) ;
20057: LD_EXP 79
20061: PPUSH
20062: LD_INT 24
20064: PPUSH
20065: LD_INT 3
20067: PPUSH
20068: LD_INT 3
20070: PPUSH
20071: LD_INT 47
20073: PPUSH
20074: CALL_OW 185
// AddComConstruct ( ru4fab , 24 , 3 , 3 , 47 ) ;
20078: LD_EXP 79
20082: PPUSH
20083: LD_INT 24
20085: PPUSH
20086: LD_INT 3
20088: PPUSH
20089: LD_INT 3
20091: PPUSH
20092: LD_INT 47
20094: PPUSH
20095: CALL_OW 185
// end ;
20099: END
// every 1 1$0 trigger Russian4AI = 1 and FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] ] ) >= 8 do var tactic , i ;
20100: LD_EXP 23
20104: PUSH
20105: LD_INT 1
20107: EQUAL
20108: PUSH
20109: LD_INT 22
20111: PUSH
20112: LD_EXP 58
20116: PUSH
20117: EMPTY
20118: LIST
20119: LIST
20120: PUSH
20121: LD_INT 21
20123: PUSH
20124: LD_INT 2
20126: PUSH
20127: EMPTY
20128: LIST
20129: LIST
20130: PUSH
20131: EMPTY
20132: LIST
20133: LIST
20134: PPUSH
20135: CALL_OW 69
20139: PUSH
20140: LD_INT 8
20142: GREATEREQUAL
20143: AND
20144: IFFALSE 20388
20146: GO 20148
20148: DISABLE
20149: LD_INT 0
20151: PPUSH
20152: PPUSH
// begin enable ;
20153: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
20154: LD_ADDR_VAR 0 1
20158: PUSH
20159: LD_INT 1
20161: PPUSH
20162: LD_INT 2
20164: PPUSH
20165: CALL_OW 12
20169: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
20170: LD_ADDR_VAR 0 2
20174: PUSH
20175: LD_INT 22
20177: PUSH
20178: LD_EXP 58
20182: PUSH
20183: EMPTY
20184: LIST
20185: LIST
20186: PUSH
20187: LD_INT 21
20189: PUSH
20190: LD_INT 2
20192: PUSH
20193: EMPTY
20194: LIST
20195: LIST
20196: PUSH
20197: LD_INT 24
20199: PUSH
20200: LD_INT 1000
20202: PUSH
20203: EMPTY
20204: LIST
20205: LIST
20206: PUSH
20207: EMPTY
20208: LIST
20209: LIST
20210: LIST
20211: PPUSH
20212: CALL_OW 69
20216: PUSH
20217: FOR_IN
20218: IFFALSE 20386
// begin if Tactic = 1 then
20220: LD_VAR 0 1
20224: PUSH
20225: LD_INT 1
20227: EQUAL
20228: IFFALSE 20302
// begin AddComAgressiveMove ( [ i ] , 181 , 84 ) ;
20230: LD_VAR 0 2
20234: PUSH
20235: EMPTY
20236: LIST
20237: PPUSH
20238: LD_INT 181
20240: PPUSH
20241: LD_INT 84
20243: PPUSH
20244: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 95 , 16 ) ;
20248: LD_VAR 0 2
20252: PUSH
20253: EMPTY
20254: LIST
20255: PPUSH
20256: LD_INT 95
20258: PPUSH
20259: LD_INT 16
20261: PPUSH
20262: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 31 , 22 ) ;
20266: LD_VAR 0 2
20270: PUSH
20271: EMPTY
20272: LIST
20273: PPUSH
20274: LD_INT 31
20276: PPUSH
20277: LD_INT 22
20279: PPUSH
20280: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 84 , 132 ) ;
20284: LD_VAR 0 2
20288: PUSH
20289: EMPTY
20290: LIST
20291: PPUSH
20292: LD_INT 84
20294: PPUSH
20295: LD_INT 132
20297: PPUSH
20298: CALL_OW 174
// end ; if Tactic = 2 then
20302: LD_VAR 0 1
20306: PUSH
20307: LD_INT 2
20309: EQUAL
20310: IFFALSE 20384
// begin AddComAgressiveMove ( [ i ] , 84 , 132 ) ;
20312: LD_VAR 0 2
20316: PUSH
20317: EMPTY
20318: LIST
20319: PPUSH
20320: LD_INT 84
20322: PPUSH
20323: LD_INT 132
20325: PPUSH
20326: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 31 , 22 ) ;
20330: LD_VAR 0 2
20334: PUSH
20335: EMPTY
20336: LIST
20337: PPUSH
20338: LD_INT 31
20340: PPUSH
20341: LD_INT 22
20343: PPUSH
20344: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 95 , 16 ) ;
20348: LD_VAR 0 2
20352: PUSH
20353: EMPTY
20354: LIST
20355: PPUSH
20356: LD_INT 95
20358: PPUSH
20359: LD_INT 16
20361: PPUSH
20362: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 181 , 84 ) ;
20366: LD_VAR 0 2
20370: PUSH
20371: EMPTY
20372: LIST
20373: PPUSH
20374: LD_INT 181
20376: PPUSH
20377: LD_INT 84
20379: PPUSH
20380: CALL_OW 174
// end ; end ;
20384: GO 20217
20386: POP
20387: POP
// end ;
20388: PPOPN 2
20390: END
// every 0 0$3 trigger Russian5AI = 1 do
20391: LD_EXP 24
20395: PUSH
20396: LD_INT 1
20398: EQUAL
20399: IFFALSE 20416
20401: GO 20403
20403: DISABLE
// begin wait ( 0 0$1 ) ;
20404: LD_INT 35
20406: PPUSH
20407: CALL_OW 67
// enable ;
20411: ENABLE
// RepairBuildingRussian5 ;
20412: CALL 20417 0 0
// end ;
20416: END
// export DestroyRepairRU5 ; export function RepairBuildingRussian5 ; var enginer_list , scientist_list , buildings , i , un ; begin
20417: LD_INT 0
20419: PPUSH
20420: PPUSH
20421: PPUSH
20422: PPUSH
20423: PPUSH
20424: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu5 ] , [ f_class , 2 ] ] ) ;
20425: LD_ADDR_VAR 0 2
20429: PUSH
20430: LD_INT 22
20432: PUSH
20433: LD_EXP 59
20437: PUSH
20438: EMPTY
20439: LIST
20440: LIST
20441: PUSH
20442: LD_INT 25
20444: PUSH
20445: LD_INT 2
20447: PUSH
20448: EMPTY
20449: LIST
20450: LIST
20451: PUSH
20452: EMPTY
20453: LIST
20454: LIST
20455: PPUSH
20456: CALL_OW 69
20460: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu5 ] , [ f_class , 4 ] ] ) ;
20461: LD_ADDR_VAR 0 3
20465: PUSH
20466: LD_INT 22
20468: PUSH
20469: LD_EXP 59
20473: PUSH
20474: EMPTY
20475: LIST
20476: LIST
20477: PUSH
20478: LD_INT 25
20480: PUSH
20481: LD_INT 4
20483: PUSH
20484: EMPTY
20485: LIST
20486: LIST
20487: PUSH
20488: EMPTY
20489: LIST
20490: LIST
20491: PPUSH
20492: CALL_OW 69
20496: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu5 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
20497: LD_ADDR_VAR 0 4
20501: PUSH
20502: LD_INT 22
20504: PUSH
20505: LD_EXP 59
20509: PUSH
20510: EMPTY
20511: LIST
20512: LIST
20513: PUSH
20514: LD_INT 21
20516: PUSH
20517: LD_INT 3
20519: PUSH
20520: EMPTY
20521: LIST
20522: LIST
20523: PUSH
20524: LD_INT 3
20526: PUSH
20527: LD_INT 24
20529: PUSH
20530: LD_INT 1000
20532: PUSH
20533: EMPTY
20534: LIST
20535: LIST
20536: PUSH
20537: EMPTY
20538: LIST
20539: LIST
20540: PUSH
20541: EMPTY
20542: LIST
20543: LIST
20544: LIST
20545: PUSH
20546: EMPTY
20547: LIST
20548: PPUSH
20549: CALL_OW 69
20553: ST_TO_ADDR
// DestroyRepairRU5 = 0 ;
20554: LD_ADDR_EXP 89
20558: PUSH
20559: LD_INT 0
20561: ST_TO_ADDR
// if buildings > 0 then
20562: LD_VAR 0 4
20566: PUSH
20567: LD_INT 0
20569: GREATER
20570: IFFALSE 20705
// begin for i = 1 to enginer_list do
20572: LD_ADDR_VAR 0 5
20576: PUSH
20577: DOUBLE
20578: LD_INT 1
20580: DEC
20581: ST_TO_ADDR
20582: LD_VAR 0 2
20586: PUSH
20587: FOR_TO
20588: IFFALSE 20703
// begin ComExitBuilding ( enginer_list [ i ] ) ;
20590: LD_VAR 0 2
20594: PUSH
20595: LD_VAR 0 5
20599: ARRAY
20600: PPUSH
20601: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
20605: LD_VAR 0 2
20609: PUSH
20610: LD_VAR 0 5
20614: ARRAY
20615: PPUSH
20616: LD_VAR 0 4
20620: PUSH
20621: LD_INT 1
20623: ARRAY
20624: PPUSH
20625: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
20629: LD_VAR 0 2
20633: PUSH
20634: LD_VAR 0 5
20638: ARRAY
20639: PPUSH
20640: CALL_OW 256
20644: PUSH
20645: LD_INT 800
20647: LESS
20648: IFFALSE 20683
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
20650: LD_VAR 0 3
20654: PUSH
20655: LD_INT 1
20657: ARRAY
20658: PPUSH
20659: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Ru5HealZone ) ;
20663: LD_VAR 0 2
20667: PUSH
20668: LD_VAR 0 5
20672: ARRAY
20673: PPUSH
20674: LD_INT 15
20676: PPUSH
20677: CALL_OW 113
// end else
20681: GO 20701
// ComEnterUnit ( scientist_list [ 1 ] , ru5lab1 ) ;
20683: LD_VAR 0 3
20687: PUSH
20688: LD_INT 1
20690: ARRAY
20691: PPUSH
20692: LD_EXP 82
20696: PPUSH
20697: CALL_OW 120
// end ;
20701: GO 20587
20703: POP
20704: POP
// end ; for i = 1 to enginer_list do
20705: LD_ADDR_VAR 0 5
20709: PUSH
20710: DOUBLE
20711: LD_INT 1
20713: DEC
20714: ST_TO_ADDR
20715: LD_VAR 0 2
20719: PUSH
20720: FOR_TO
20721: IFFALSE 20882
// begin wait ( 0 0$3 ) ;
20723: LD_INT 105
20725: PPUSH
20726: CALL_OW 67
// if buildings = 0 and DestroyRepairRU5 = 0 then
20730: LD_VAR 0 4
20734: PUSH
20735: LD_INT 0
20737: EQUAL
20738: PUSH
20739: LD_EXP 89
20743: PUSH
20744: LD_INT 0
20746: EQUAL
20747: AND
20748: IFFALSE 20772
// begin ComEnterUnit ( enginer_list [ i ] , ru5depo ) ;
20750: LD_VAR 0 2
20754: PUSH
20755: LD_VAR 0 5
20759: ARRAY
20760: PPUSH
20761: LD_EXP 81
20765: PPUSH
20766: CALL_OW 120
// end else
20770: GO 20787
// begin ComExitBuilding ( enginer_list [ i ] ) ;
20772: LD_VAR 0 2
20776: PUSH
20777: LD_VAR 0 5
20781: ARRAY
20782: PPUSH
20783: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
20787: LD_VAR 0 2
20791: PUSH
20792: LD_VAR 0 5
20796: ARRAY
20797: PPUSH
20798: CALL_OW 256
20802: PUSH
20803: LD_INT 1000
20805: LESS
20806: IFFALSE 20841
// begin ComMoveToArea ( enginer_List [ i ] , Ru5HealZone ) ;
20808: LD_VAR 0 2
20812: PUSH
20813: LD_VAR 0 5
20817: ARRAY
20818: PPUSH
20819: LD_INT 15
20821: PPUSH
20822: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
20826: LD_VAR 0 3
20830: PUSH
20831: LD_INT 1
20833: ARRAY
20834: PPUSH
20835: CALL_OW 122
// end else
20839: GO 20880
// if GetLives ( enginer_list [ i ] ) = 1000 then
20841: LD_VAR 0 2
20845: PUSH
20846: LD_VAR 0 5
20850: ARRAY
20851: PPUSH
20852: CALL_OW 256
20856: PUSH
20857: LD_INT 1000
20859: EQUAL
20860: IFFALSE 20880
// begin ComEnterUnit ( scientist_list [ 1 ] , ru5lab1 ) ;
20862: LD_VAR 0 3
20866: PUSH
20867: LD_INT 1
20869: ARRAY
20870: PPUSH
20871: LD_EXP 82
20875: PPUSH
20876: CALL_OW 120
// end ; end ;
20880: GO 20720
20882: POP
20883: POP
// end ;
20884: LD_VAR 0 1
20888: RET
// every 0 0$1 trigger Russian5AI = 1 do var i , l ;
20889: LD_EXP 24
20893: PUSH
20894: LD_INT 1
20896: EQUAL
20897: IFFALSE 20974
20899: GO 20901
20901: DISABLE
20902: LD_INT 0
20904: PPUSH
20905: PPUSH
// begin enable ;
20906: ENABLE
// for i in FilterUnitsInArea ( Ru5Base , [ [ f_class , 1 ] , [ f_side , cpu5 ] ] ) do
20907: LD_ADDR_VAR 0 1
20911: PUSH
20912: LD_INT 11
20914: PPUSH
20915: LD_INT 25
20917: PUSH
20918: LD_INT 1
20920: PUSH
20921: EMPTY
20922: LIST
20923: LIST
20924: PUSH
20925: LD_INT 22
20927: PUSH
20928: LD_EXP 59
20932: PUSH
20933: EMPTY
20934: LIST
20935: LIST
20936: PUSH
20937: EMPTY
20938: LIST
20939: LIST
20940: PPUSH
20941: CALL_OW 70
20945: PUSH
20946: FOR_IN
20947: IFFALSE 20972
// begin wait ( 0 0$2 ) ;
20949: LD_INT 70
20951: PPUSH
20952: CALL_OW 67
// ComEnterUnit ( i , ru5armoury ) ;
20956: LD_VAR 0 1
20960: PPUSH
20961: LD_EXP 84
20965: PPUSH
20966: CALL_OW 120
// end ;
20970: GO 20946
20972: POP
20973: POP
// end ;
20974: PPOPN 2
20976: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu5 ] , [ f_type , unit_vehicle ] ] ) = 0 do
20977: LD_INT 22
20979: PUSH
20980: LD_EXP 59
20984: PUSH
20985: EMPTY
20986: LIST
20987: LIST
20988: PUSH
20989: LD_INT 21
20991: PUSH
20992: LD_INT 2
20994: PUSH
20995: EMPTY
20996: LIST
20997: LIST
20998: PUSH
20999: EMPTY
21000: LIST
21001: LIST
21002: PPUSH
21003: CALL_OW 69
21007: PUSH
21008: LD_INT 0
21010: EQUAL
21011: IFFALSE 21101
21013: GO 21015
21015: DISABLE
// begin enable ;
21016: ENABLE
// AddComConstruct ( ru5fab , 22 , 1 , 3 , 44 ) ;
21017: LD_EXP 83
21021: PPUSH
21022: LD_INT 22
21024: PPUSH
21025: LD_INT 1
21027: PPUSH
21028: LD_INT 3
21030: PPUSH
21031: LD_INT 44
21033: PPUSH
21034: CALL_OW 185
// AddComConstruct ( ru5fab , 22 , 1 , 3 , 44 ) ;
21038: LD_EXP 83
21042: PPUSH
21043: LD_INT 22
21045: PPUSH
21046: LD_INT 1
21048: PPUSH
21049: LD_INT 3
21051: PPUSH
21052: LD_INT 44
21054: PPUSH
21055: CALL_OW 185
// AddComConstruct ( ru5fab , 22 , 1 , 3 , 43 ) ;
21059: LD_EXP 83
21063: PPUSH
21064: LD_INT 22
21066: PPUSH
21067: LD_INT 1
21069: PPUSH
21070: LD_INT 3
21072: PPUSH
21073: LD_INT 43
21075: PPUSH
21076: CALL_OW 185
// AddComConstruct ( ru5fab , 22 , 1 , 3 , 43 ) ;
21080: LD_EXP 83
21084: PPUSH
21085: LD_INT 22
21087: PPUSH
21088: LD_INT 1
21090: PPUSH
21091: LD_INT 3
21093: PPUSH
21094: LD_INT 43
21096: PPUSH
21097: CALL_OW 185
// end ;
21101: END
// every 1 1$0 trigger Russian5AI = 1 and FilterAllUnits ( [ [ f_side , cpu5 ] , [ f_type , unit_vehicle ] ] ) >= 4 do var tactic , i ;
21102: LD_EXP 24
21106: PUSH
21107: LD_INT 1
21109: EQUAL
21110: PUSH
21111: LD_INT 22
21113: PUSH
21114: LD_EXP 59
21118: PUSH
21119: EMPTY
21120: LIST
21121: LIST
21122: PUSH
21123: LD_INT 21
21125: PUSH
21126: LD_INT 2
21128: PUSH
21129: EMPTY
21130: LIST
21131: LIST
21132: PUSH
21133: EMPTY
21134: LIST
21135: LIST
21136: PPUSH
21137: CALL_OW 69
21141: PUSH
21142: LD_INT 4
21144: GREATEREQUAL
21145: AND
21146: IFFALSE 21390
21148: GO 21150
21150: DISABLE
21151: LD_INT 0
21153: PPUSH
21154: PPUSH
// begin enable ;
21155: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
21156: LD_ADDR_VAR 0 1
21160: PUSH
21161: LD_INT 1
21163: PPUSH
21164: LD_INT 2
21166: PPUSH
21167: CALL_OW 12
21171: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu5 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
21172: LD_ADDR_VAR 0 2
21176: PUSH
21177: LD_INT 22
21179: PUSH
21180: LD_EXP 59
21184: PUSH
21185: EMPTY
21186: LIST
21187: LIST
21188: PUSH
21189: LD_INT 21
21191: PUSH
21192: LD_INT 2
21194: PUSH
21195: EMPTY
21196: LIST
21197: LIST
21198: PUSH
21199: LD_INT 24
21201: PUSH
21202: LD_INT 1000
21204: PUSH
21205: EMPTY
21206: LIST
21207: LIST
21208: PUSH
21209: EMPTY
21210: LIST
21211: LIST
21212: LIST
21213: PPUSH
21214: CALL_OW 69
21218: PUSH
21219: FOR_IN
21220: IFFALSE 21388
// begin if Tactic = 1 then
21222: LD_VAR 0 1
21226: PUSH
21227: LD_INT 1
21229: EQUAL
21230: IFFALSE 21304
// begin AddComAgressiveMove ( [ i ] , 181 , 84 ) ;
21232: LD_VAR 0 2
21236: PUSH
21237: EMPTY
21238: LIST
21239: PPUSH
21240: LD_INT 181
21242: PPUSH
21243: LD_INT 84
21245: PPUSH
21246: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 95 , 16 ) ;
21250: LD_VAR 0 2
21254: PUSH
21255: EMPTY
21256: LIST
21257: PPUSH
21258: LD_INT 95
21260: PPUSH
21261: LD_INT 16
21263: PPUSH
21264: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 31 , 22 ) ;
21268: LD_VAR 0 2
21272: PUSH
21273: EMPTY
21274: LIST
21275: PPUSH
21276: LD_INT 31
21278: PPUSH
21279: LD_INT 22
21281: PPUSH
21282: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 84 , 132 ) ;
21286: LD_VAR 0 2
21290: PUSH
21291: EMPTY
21292: LIST
21293: PPUSH
21294: LD_INT 84
21296: PPUSH
21297: LD_INT 132
21299: PPUSH
21300: CALL_OW 174
// end ; if Tactic = 2 then
21304: LD_VAR 0 1
21308: PUSH
21309: LD_INT 2
21311: EQUAL
21312: IFFALSE 21386
// begin AddComAgressiveMove ( [ i ] , 84 , 132 ) ;
21314: LD_VAR 0 2
21318: PUSH
21319: EMPTY
21320: LIST
21321: PPUSH
21322: LD_INT 84
21324: PPUSH
21325: LD_INT 132
21327: PPUSH
21328: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 31 , 22 ) ;
21332: LD_VAR 0 2
21336: PUSH
21337: EMPTY
21338: LIST
21339: PPUSH
21340: LD_INT 31
21342: PPUSH
21343: LD_INT 22
21345: PPUSH
21346: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 95 , 16 ) ;
21350: LD_VAR 0 2
21354: PUSH
21355: EMPTY
21356: LIST
21357: PPUSH
21358: LD_INT 95
21360: PPUSH
21361: LD_INT 16
21363: PPUSH
21364: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 181 , 84 ) ;
21368: LD_VAR 0 2
21372: PUSH
21373: EMPTY
21374: LIST
21375: PPUSH
21376: LD_INT 181
21378: PPUSH
21379: LD_INT 84
21381: PPUSH
21382: CALL_OW 174
// end ; end ;
21386: GO 21219
21388: POP
21389: POP
// end ; end_of_file
21390: PPOPN 2
21392: END
// every 0 0$01 do var c , list , un ;
21393: GO 21395
21395: DISABLE
21396: LD_INT 0
21398: PPUSH
21399: PPUSH
21400: PPUSH
// begin list = FilterAllUnits ( [ [ f_weapon , 98 ] ] ) ;
21401: LD_ADDR_VAR 0 2
21405: PUSH
21406: LD_INT 34
21408: PUSH
21409: LD_INT 98
21411: PUSH
21412: EMPTY
21413: LIST
21414: LIST
21415: PUSH
21416: EMPTY
21417: LIST
21418: PPUSH
21419: CALL_OW 69
21423: ST_TO_ADDR
// enable ;
21424: ENABLE
// for un in list do
21425: LD_ADDR_VAR 0 3
21429: PUSH
21430: LD_VAR 0 2
21434: PUSH
21435: FOR_IN
21436: IFFALSE 21499
// begin c = WantsToAttack ( un ) ;
21438: LD_ADDR_VAR 0 1
21442: PUSH
21443: LD_VAR 0 3
21447: PPUSH
21448: CALL_OW 319
21452: ST_TO_ADDR
// if UnitShoot ( c ) = un then
21453: LD_VAR 0 1
21457: PPUSH
21458: CALL_OW 504
21462: PUSH
21463: LD_VAR 0 3
21467: EQUAL
21468: IFFALSE 21497
// ArtContamination ( GetX ( c ) , GetY ( c ) , 1 ) ;
21470: LD_VAR 0 1
21474: PPUSH
21475: CALL_OW 250
21479: PPUSH
21480: LD_VAR 0 1
21484: PPUSH
21485: CALL_OW 251
21489: PPUSH
21490: LD_INT 1
21492: PPUSH
21493: CALL_OW 495
// end ;
21497: GO 21435
21499: POP
21500: POP
// end ;
21501: PPOPN 3
21503: END
